GC检测用于查看堆中是否有对象不再被程序使用。如果这样的对象存在,这些对象占用的内存就可以被回收利用。(如果堆中没有可用内存空间时,new操作符将会抛出OutOfMemoryException异常)GC是怎样知道一个对象是否还被程序使用呢?你可以想象一下,这不是一个容易回答的问题。
每一个程序都有一组根节点(roots),它们用于识别定位托管堆中的对象或空(null)对象指向的存储空间。比如,程序中所有全局对象指针或静态对象指针都被看作是程序根节点(roots)的一部分。另外,线程栈中任何局部变量或参数对象...
分类:
Web程序 时间:
2014-06-30 07:33:05
阅读次数:
327
1. 在IDE中查看Log信息
当程序运行垃圾回收的时候,会打印一条Log信息,其格式如下:
D/dalvikvm: , , ,
GC_Reason表示导致垃圾回收的原因以及当前的回收类型,包括以下几类:
GC_CONCURRENT:当堆中对象数量达到一定是触发的垃圾收集
GC_FOR_MALLOC:在内存已满的情况下分配内存,此时系统会暂停程序并回收内存
...
分类:
移动开发 时间:
2014-06-29 23:28:34
阅读次数:
374
本文已经迁移到: http://cpp.winxgui.com/cn:garbage-collection-in-cplusplus使用智能指针(smart pointers) http://www.codeproject.com/cpp/garbage_collect.asp 原理:基...
分类:
编程语言 时间:
2014-06-29 19:12:03
阅读次数:
232
.NET CLR将所有资源分配到托管堆上,这有点像C语言中的堆但是你不用去释放资源因为闲置资源在.NET中将被自动释放。现在就有一个问题了,托管堆是怎么知道一个对象什么时候将不再被程序使用?现今有很多的GC算法。每一个算法都针对某一特定环境进行调优,进而获得最好的性能。这篇文章着重于.NET CLR使用的GC算法。.Net下的GC完全解决了开发者跟踪内存使用以及控制释放内存的窘态。然而,你或许想要理解GC是怎么工作的。此系列文章中将会解释内存资源是怎么被合理分配及管理的,并包含非常详细的内在算法描述。同时,...
分类:
Web程序 时间:
2014-06-28 07:50:39
阅读次数:
386
一. OOP的特点
1. 万物皆为对象;
2. 程序是对象的集合,他们通过发送信息来告诉彼此所要做的;
3. 每个对象都有自己的由其他对象所构成的存储;
4. 每个对象都拥有它的类型;
5. 某一特定类型的对象都可以接收同样的消息;
二. Java比C++简单?
1. Java有垃圾回收器;
2. Java使用单根继承;
3. Java只能以一种方式创建对...
分类:
编程语言 时间:
2014-06-27 08:38:40
阅读次数:
165
持久化对象的状态 : 1、 瞬时对象(Transient Object):使用new操作符初始化的对象不是立刻就持久的。它们的状态是瞬时的,也就是说它们没有任何跟数据库表相关联的行为,只要应用不再引用这些对象(不再被任何其它对象所引用),它们的状态将会丢失,并由垃圾回收机制回收 2、 持久化对象(P...
分类:
系统相关 时间:
2014-06-26 17:30:16
阅读次数:
290
程序中我们每一丝动作都会加大程序运行的负担,当刚开始学习程序的时候常常不会去考虑程序运行的效率,大多数情况是为了实现功能,只要功能达到我想要的那么就算是达成了此项目标。当大部分功能的编码实现对我们来说都不是大的问题的时候,我们要提升就要考虑怎样把程序写的更加规范更加高效。怎样写的高效,我们不说整体架构的设计,仅仅分享一下C#自身程序中的一些会影响性能的点。
1.垃圾回收
.NET Fr...
分类:
其他好文 时间:
2014-06-26 13:57:04
阅读次数:
379
垃圾收集算法
引用计数
堆中的每个对象都有一个引用计数,当对象被引用时引用计数加1,当对象的引用被重新赋值或超出有效区域时引用计数减1,当一个对象被回收后,它所引用的对象的引用计算减1。当一个对象的引用计数变为0时就被回收。
引用计数的优点:
垃圾收集器可以很快地执行,当一个对象的引用数为0时就可以回收这个对象,垃圾收集交织在程序的正常执行过程中,不用长时间中断程序的正...
分类:
编程语言 时间:
2014-06-24 22:11:09
阅读次数:
275
对“demo!demo.Index+HookProc::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
解救办法:
//保持活动 避免 回调过程 被垃圾回收
GCHandle.Alloc(委托);...
分类:
其他好文 时间:
2014-06-22 22:04:30
阅读次数:
226