1、 在堆上分配对象的代价十分高昂,然而java的垃圾回收机制可以和其他语言从堆栈上分配空间的速度想媲美,但是,释放对上的存储空间也有开销;
2、 当它工作的时候,将一面回收空间,一面使堆中的对象紧凑排列。这样就尽量避免了页面错误。通过垃圾回收器对对象重新排列,实现了一种高速的、有限空间可供分配的堆模型;
3、 其他系统的垃圾回收机制:
a、 引用计数是一种简单但速度很慢的垃圾回收计数。每个对象都含有一个引用计数器,当有引用链接至对象时,引用计数加1,当引用离开作用于或者被设置为null时,引用计数减1。缺陷:如果兑现之间存在循环引用,就会出现麻烦。
b、 另一种思想:对任何“活”的对象,一定能够最终追溯到其存活在对战或静态存储区之中的引用。这个引用链条可能会穿过数个对象层次。由此,如果从堆栈和静态存储区开始,遍历所有的引用,就能找到所有的的“活”的对象。
4、 java的垃圾回收机制:
a、 停止—复制(stop-and-copy):先暂停程序的运行,然后将所有存活的对象从当前堆复制到另一个堆,没有复制的全部都是垃圾。当对象被复制到新堆时,它们是一个挨着一个的,紧凑的。效率很低:首先,得有两个堆空间占用率200%;其次,垃圾较少时,复制大量的活着的对象,是很大的浪费。
b、 标记—清扫(mark-and-sweep):从对战和静态存储区出发,遍历所有的引用,进而找出所有存活的对象,如果活着,就标记。只有全部标记完毕的时候,清理动作才开始。在清理的时候,没有标记的对象将会被释放,不会发生任何复制动作。但是剩下的对空间是不连续的,垃圾回收器要是希望得到连续空间的话,就得重新整理剩下的对象。
c、 注意:“停止—复制”的意思是这种垃圾回收动作不是在后台进行的;相反,垃圾回收动作发生的同时,程序将会被暂停。有人将垃圾回收视为低优先级的后台进程,而事实上并不是这样,当可用内存数量比较低的时候,Sun版本的垃圾回收器就会暂停运行程序。同样,“标记-清扫”工作也必须在程序暂停的情况下才能进行。
d、 在java虚拟机中,内存分配是以较大的块为单位的。每个块内都用相应的代数(generation count)来记录它是否还存活。代数随着引用的次数而增加。垃圾回收器将对上次回收动作之后的新分配的块进行整理。这对处理大量短命的临时对象很有帮助。垃圾回收器会定期进行完整的清理动作——大型对象仍然不会被复制(只是代数增加),内涵小型对象的那些块则被复制并整理。Java虚拟机会进行监视,如果所有对象都很稳定,垃圾回收器的效率降低的话,就切换到“标记—清扫”方式;同样,java虚拟机会追踪“标记—清扫”的效果,要是堆空间出现很多碎片,就会切换到“停止—复制”方式。这就是“自适应”技术。
总结:Java垃圾回收器是一种“自适应的、分代的、停止—复制、标记-清扫”式的垃圾回收器
【备注,以上内容转载自 http://blog.csdn.net/chen105315/article/details/4263528】
分享到:
相关推荐
1:JVM内存模型:类加载机制【转载、验证、准备、解析、初始化】+类装载器【装载器分类、加载原则】+运行时数据区【方法区、堆、虚拟机栈、本地方法栈、程序计数器】。 2:垃圾回收:垃圾确定【引用计数法、可达性分析...
其中,CMS和G1是并行或并发的,它们在不影响应用程序正常运行的情况下进行垃圾回收,降低了停顿时间。 4. **内存模型** Hotspot实现了Java内存模型(JMM),确保了多线程环境下的数据一致性。它定义了变量访问规则...
10. **垃圾回收(Garbage Collection)**:Java的自动内存管理机制,通过垃圾回收器回收不再使用的对象占用的内存。理解GC的工作原理和性能优化策略,能有效防止内存泄漏。 11. **Java虚拟机(JVM)**:理解JVM的...
虚拟机JVM(一次编译到处运行) (3).GC垃圾回收机制 开发环境配置、开发工具的安装 环境配置、安装各 开发工具网上教程是比较多且详细,具体可以百度或参考 [] 算法导论资料 Android设计模式 兼职网站: ...
9. **JVM优化**:了解JVM内存模型(堆、栈、方法区等),垃圾回收机制(GC),以及如何通过JMX、JConsole等工具进行性能监控和调优。 10. **数据库操作**:掌握JDBC基本操作,事务处理,以及SQL语句优化。了解ORM...
19. JVM:涵盖Java虚拟机的内存模型、垃圾回收机制、类加载机制、性能调优等高级概念。 除了上述模块,文章还强调了对于面试题的深入解析和代码案例的提供,这对于面试者理解知识点、整理思路和表达能力的培养是至...
- **内存管理**:理解堆栈内存分配,垃圾回收机制(GC)及其原理。 - **异常处理**:熟悉try-catch-finally结构,异常类型和异常链。 2. **集合框架** - **ArrayList和LinkedList**:它们的实现方式、性能特点及...
以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用 JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 设计模式之 Composite(组合) 就是将类用树形结构组合成...