博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
"每日一道面试题".net托管堆是否会存在内存泄漏的情况
阅读量:6034 次
发布时间:2019-06-20

本文共 441 字,大约阅读时间需要 1 分钟。

首先说答案:会

所谓的内存泄漏,就是指内存空间上产生了不再被实际使用却又无非被分配的对象。严格意义上来说,在.net中经常会遇到内存泄漏的情况,因为托管堆内的对象不再被使用时,需要等待下一次GC才会被释放。大对象的分配与释放,不正确的Finalize方法,以及不恰当的保存根引用都会引发内存泄漏的情况。

在GC进行垃圾回收的时候,有两个基本动作,第一个就是遍历找到不再被使用的对象,并标记为垃圾,第二个就是移动对象是他们紧靠托管堆的一方。在.net中,大对象被分配到托管堆上一个特殊的区域,称为“大对象堆”,大对象堆的对象被回收释放时,其他的大对象不会发生移动,这样,在程序过多地分配和释放大对象之后,就会产生很多内存碎片。

不恰当的保存根引用,最常见的就是 把一个对象设为公共静态变量,公共静态变量将被GC视为一直在被使用的对象,而变量内若包含其他引用,这些引用对象也不会被释放

转载于:https://www.cnblogs.com/ZyCoder/p/6770734.html

你可能感兴趣的文章
用JS写CSS
查看>>
TOJ4537: n阶行列式
查看>>
算法刷题笔记-stack-四则运算
查看>>
3.16
查看>>
Linux下arp用法
查看>>
表单文件上传与文件下载
查看>>
jquery 中prop()的使用方法
查看>>
下午考
查看>>
WKWebView
查看>>
创建字符设备的三种方法
查看>>
走在网页游戏开发的路上(六)
查看>>
nginx 配置的server_name参数(转)
查看>>
Uva592 Island of Logic
查看>>
C++基础代码--20余种数据结构和算法的实现
查看>>
footer固定在页面底部的实现方法总结
查看>>
nginx上传文件大小
查看>>
数字通信原理笔记(一)---概述
查看>>
HDU 2243 考研路茫茫——单词情结(自动机)
查看>>
Dubbo OPS工具——dubbo-admin & dubbo-monitor
查看>>
如何将OpenCV中的Mat类绑定为OpenGL中的纹理
查看>>