JVM

关于 Java 虚拟机(Java Virtual Machine)的知识要点

本节内容整理自书籍《深入理解Java 虚拟机》。

为什么引用计数器判定对象是否回收不可行?

引用计数法为每个对象设置引用计数器,当有其他对象引用它时,计数器加1;引用失效时,计数器减一,计数器为0就是不再使用的对象。

对于 objA.ins=objB,objB.ins=objA,但是 objA和objB再无其他引用的情况,这两个对象已经不会再被访问了,但两个对象的引用计数器都不是0,因此引用计数算法法无法通知收集器进行收集。

Java中堆和(虚拟机)栈的区别?

  • 堆是线程共享的内存空间,用于存放对象实例,是垃圾回收的主要区域

  • 虚拟机栈是线程私有内存空间,主要用于存放方法的局部变量表、方法出口等信息,随着方法的执行和结束将对应的栈帧入栈和出栈,不用垃圾回收。

最后更新于

这有帮助吗?