有关于 JVM 的垃圾收集(一)

Java 中使用 new、newarray、anewarray 和 multianewarray 指令来创建的对象,当这些对象不再使用时由垃圾收集来释放。那么 反序列化等都是间接使用了前面的某个指令, clone()  是个本地方法?

JVM 规范不需要任何特定的垃圾收集技术,甚至也没要求有垃圾收集机制。大概只是说不需要手工释放内存,具体怎么实现各 JVM 自行决定。

GC 除了释放不再被引用的对象,还要处理堆碎片,整理出连续的空闲空间才能放得下新的对象。不至于出现总的空闲空间足够,但碎片太多而报出 "Out of Memory" 的异常。

GC 有两个好处:一个是提高了生产率,不用埋头于 Memory Link 的有时甚至是逐行的检查;二,GC 也是 Java 安全策略的一部分,有了它不至于因错误的释放内存而导至 JVM 崩溃。但是 GC 的一个潜在缺陷影响了程序的性能,它需要一直在后台不时的做些事情,而且实时性也有所欠缺。 阅读全文 >>