垃圾收集的实现
1 引用技术:早期版本采用
*优点:交织在程序运行之中,运行比较快
*缺点:由于计数带来额外的开销。
不能识别循环引用。
2 跟踪收集
*优点:可以识别循环引用,不会交织在程序运行过程中
*缺点:需要维护一张对象引用全景图,增加内存开销,如果是一个复杂的引用,那
么还会增加引用对象图遍历的性能开销。
3 基于对象跟踪的分代增量收集:当今大部分企业级虚拟机都用这种技术,SUN,IBM等,BEA的
JRocket等
具体实现,sun的hotSpot为例
sun的jvm将整个heap分为三代,YoungGen,OldGen,PermGen,对youngGen的GC是相对搞笑和
快速的,youngGen中,经历若干次的收集还没被回收的对象,将晋升到OldGen,。内存占用较大的对象
,则直接分配到OldGen,而PermGen中用于存放长时间存活的对象,如:Class对象基础信息,以及全局
应用配置信息等
确定使用完对象之后,尽量把对象设为NULL,小收集的时候,就会把NULL的这些对象收集。