自动垃圾收集怎么知道我的内存还用不用?

问题描述

自动垃圾收集怎么知道我的内存还用不用?被他删了,我又突然要用怎么办?他判断为垃圾的原则是什么?msdn中也没有说清楚啊

解决方案

解决方案二:
那你程序终止了嘛那就会自动垃圾收集了啊!呵呵,随便说说的!
解决方案三:
一般来说对象出了它的作用域之后GC就会自动将其释放掉了吧
解决方案四:
自动垃圾收集怎么知道我的内存还用不用?被他删了,我又突然要用怎么办?他判断为垃圾的原则是什么?msdn中也没有说清楚啊==CLR会检查每一个托管堆中的对象,在栈中是否还有指向它的引用,如果没有,则这个对象可以回收,只要栈中有一个指向此对象的引用,此对象就不能被回收
解决方案五:
这个问题其实是很有意思的,怎么样回收这些垃圾是某些公司的面试题现在流行的算法记得是"分代收集算法",楼主有兴趣可以google下
解决方案六:
.netframework有引用计数器,增加一个引用,引用计数起就加一,减少就减一.垃圾收集时就会处理引用计数器为0的变量
解决方案七:
一两句话好像很难形容吧,其中针对托管代码的资源管理和针对不安全代码资源的处理有很大的差异,如果直接编写一些托管代码的话,我们其实也可以选择手动来释放资源的,并非是没有办法。垃圾收集器的算法其实还是相当复杂的,从程序员上看一篇对微软负责垃圾收集器架构师的访谈,其中有所介绍,其中也提到了虽然目前可能还有一些性能和算法方面的问题,但是,其工作仍在继续……so,如果楼主想深入学习这方面知识的话,可能资料还不是很多吧
解决方案八:
维护每一个对象的引用,发现如果没有引用了,就删除回收.Net内存管理和垃圾回收.NET框架下的自动内存管理深入理解.NET内存回收机制
解决方案九:
记得有什么“弱应用”不知道对你有没有用?
解决方案十:
引用3楼amandag的回复:

自动垃圾收集怎么知道我的内存还用不用?被他删了,我又突然要用怎么办?他判断为垃圾的原则是什么?msdn中也没有说清楚啊==CLR会检查每一个托管堆中的对象,在栈中是否还有指向它的引用,如果没有,则这个对象可以回收,只要栈中有一个指向此对象的引用,此对象就不能被回收

解决方案十一:
就是说,我只要保证有引用存在,就一定不会被垃圾回收吧,要不然太可怕了!我的程序要用的时候突然被他干掉了,那,,,,,
解决方案十二:
引用2楼ojlovecd的回复:

一般来说对象出了它的作用域之后GC就会自动将其释放掉了吧

new产生的对象作用域是全局的呀!
解决方案十三:
就是说,我只要保证有引用存在,就一定不会被垃圾回收吧,==正确
解决方案十四:
回收是分代的,一般是分三代,在内存不够的时候,回收一批不被引用的内存,回收了还不够的就回收第二代的,否则,不回收所以出了作用域未必就会释放了资源
解决方案十五:
c#垃圾收集器是一个按标记进行清除的垃圾收集系统,它工作时需要扫描C#对象的动态内存区,标记被引用的存储空间;当一个对象运行结束后,则自动地将标记清除。通过这种标记方法,当C#垃圾收集器扫描了所有可能被对象利用的空间后,那些没有被标记的对象(即没有被引用的)即作为垃圾被收集。------摘自《C#应用程序开发标准教程》希望对楼主有帮助。^0^
解决方案:
一般来说对象出了它的作用域之后GC就会自动将其释放掉了吧
解决方案:
引用10楼yueyeli的回复:

就是说,我只要保证有引用存在,就一定不会被垃圾回收吧,要不然太可怕了!我的程序要用的时候突然被他干掉了,那,,,,,

被回收的都是已经没有引用的。也就是说,即使程序想要再用这个对象,也没法通过任何引用来找到它了。这样的对象被回收掉,没有什么危险。反过来说,如果某个对象还有可能通过某个引用被程序使用,那么它就不会被回收
解决方案:
学习了!!帮你顶!!
解决方案:
生命周期结束就想用都用不了呗,这就回收
解决方案:
一般来说,对于托管代码,对象若不存在任何引用的话,C#会自己释放掉不过,我还是喜欢自己写代码释放
解决方案:
引用11楼yueyeli的回复:

引用2楼ojlovecd的回复:一般来说对象出了它的作用域之后GC就会自动将其释放掉了吧new产生的对象作用域是全局的呀!

错,当然不是全局,在定义作用域之内.static才是全局
解决方案:
出了作用域不一定会回收,一定要等到对象的引用计数为0了才会回收。
解决方案:
引用7楼virusplayer的回复:

维护每一个对象的引用,发现如果没有引用了,就删除回收.Net内存管理和垃圾回收http://www.cppblog.com/mzty/archive/2006/04/30/6486.html.NET框架下的自动内存管理http://dev.21tx.com/2002/10/11/10058.html深入理解.NET内存回收机制http://www.yesky.com/20030311/1656401.shtml

时间: 2024-10-25 05:16:14

自动垃圾收集怎么知道我的内存还用不用?的相关文章

漫谈.Net中的自动垃圾收集(Garbage Collection)机制(转)

作者:cornfield漫谈.Net中的自动垃圾收集(Garbage Collection)机制    一直以来,垃圾收集(Garbage Collection)在软件界的名声并不好.很多程序员认为垃圾收集做得不如自己来的直接,高效.这种说法有些时候是对的,一个精心为自己的特定程序设计定制的内存回收方法,肯定比为所有程序提供垃圾回收性能要高.但那对程序员要求甚高,一个项目下来花在内存回收的设计上的时间和精力是很可观的,而稍有不慎便会酿成灾难性的错误,技术再高超的程序员负担不起,整个现代软件工业也

自动定时重启sql server回收内存

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 最近为数据库服务器增加了内存,达到了最大支持的8G,数据库用的是mssql 2005 ,之前内存一直是4G的,不存在内存大和32位操作系统冲突的事情,32位操作系统单进程最大支持2G的内存,这样子的话内存就白加了,怎么办呢? 网上搜索了很多资料,发现微软提供了一个算是临时的解决方案吧,使用AWE来分配内存,这样子sqlserver占用的内存基

电脑自动运行kprcycleaner.exe进程占用内存如何解决

  根据以上情况,我们可以参考下面的内容: 1.打开金山毒霸的隐私清理设置窗口; 2.关闭自动清理隐私等选项即可. 如果电脑自动运行kprcycleaner.exe进程占用内存,我们可以通过上述的方法进行解决.

电脑最大支持内存还和操作系统有关系么

问题描述 电脑最大支持内存还和操作系统有关系么 本人机子G460原配内存2G DDR3 1067 首先去官网上看,说是最大支持2条DDR3 2G,但是不少网友时候可以2条 4G. 后来买了条8G DDR3 1600的内存条,做了测试. 1.发现bios显示systemmen 8G,但是开机进去win7会无限蓝屏而进入ubuntu正常显示了8G内存 2.使用原来内存两个系统正常 3.使用原配+8G DDR3 1600,bios显示systemmen 0240M,但是进入ubuntu是可以正常看到1

iostream-为什么new没有申请到那个位置的内存还可以访问那个位置的值

问题描述 为什么new没有申请到那个位置的内存还可以访问那个位置的值 #include using namespace std; int main(void) { float *x = new float[10]; for(int i=0;i!=10;++i) x[i] = i; cout << "the 1st element is " << x[0] << endl; cout << "the 12st element is

浅谈JavaScript的自动垃圾收集机制_javascript技巧

执行环境会负责管理代码执行过程中使用的内存,编写JavaScript程序时,所需内存的分配以及无用内存的回收完全实现自动管理. 原理: 找出那些不再继续使用的变量,然后释放其占用的内存.为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间)周期性地执行这一操作. 垃圾收集的方式: 1.标记清除(mark-and-sweep) 最常用的垃圾收集方式.当变量进入环境时,就将变量标记为"进入环境".从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,

JavaScript的自动垃圾收集机制简单讲解

执行环境会负责管理代码执行过程中使用的内存,编写JavaScript程序时,所需内存的分配以及无用内存的回收完全实现自动管理. 原理: 找出那些不再继续使用的变量,然后释放其占用的内存.为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间)周期性地执行这一操作. 垃圾收集的方式: 1.标记清除(mark-and-sweep)   最常用的垃圾收集方式.当变量进入环境时,就将变量标记为"进入环境".从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环

剖析Windows用1G内存还慢的原因_WindowsXP

现在的内存基本达到了1元/MB的均价,不少朋友的电脑告别了可怜的64MB.128MB内存,256MB已经成为标准配制,512MB甚至1GB的内存也不再是"耸人听闻".但是有一件事情让很多朋友疑惑:"为什么使用1G内存我的Windows启动.软件运行速度还是这么慢?" 安装大容量内存后,系统.程序运行效率没有得到大幅度提高,这是因为系统本身运行机制限制了其管理和运用硬件资源的能力.所以纵然硬件资源非常丰厚,如果超出了Windows管理的范围,那么性能也不会得到明显提升

《九界》负责人万国华:用外挂还不如不用

<九界>是由深圳网域从06年开始研发的一款大型3D玄幻网游.游戏采用网域自主研发的一款全3D游戏引擎,游戏前后耗时4年,拥有上千个任务,近万平方公里的场景面积. 2010年China joy上,位于W3馆的深圳网域爆出新作<九界>全新CG.对于此新作,记者访问了<九界>项目负责人万国华先生.记者在现场试玩感觉<九界>的画面华丽炫目,没有太多血腥或很恶心的死亡效果. <九界>项目负责人万国华 万国华在一旁补充:"玩家在体验<九界&g