深入理解Java虚拟机
文章平均质量分 85
何时江畔初见月
这个作者很懒,什么都没留下…
展开
-
深入理解JVM虚拟机读书笔记(二)
的方法来判断一个对象什么时候进行回收,即每当一个地方引用这个对象的时候对计数器加1,反之减1,当计数器为0的时候进行回收,但是在Java中存在着一种循环引用的情况,即A引用了B,B引用了A,此时当没有其他地方引用了这两个对象的时候,这两个对象仍旧持有对方的引用,因此引用计数器的方法不适合对这两个对象进行回收。但其实如果新生代里的对象被老年代里的对象引用的话这个对象并不会回收,而多次垃圾扫描后,这个对象最终也会放入老年代,这个过程其实可以通过“记忆集”来实现,将这样的对象放入其中来减少扫描的开销。原创 2024-06-20 23:31:08 · 1335 阅读 · 0 评论 -
深入理解JVM虚拟机读书笔记(一)
的,他的生命周期与线程相同,每个方法被执行的时候,Java虚拟机都会创建一个栈帧,用于存放局部变量表、操作数栈、动态链接、方法出口等信息,每一个方法被调用直至完毕的过程,就对应一个栈帧在虚拟机栈中从入到出的过程。ps:HotSpot虚拟机栈不会扩容,所以对于他来说,他的OOM的问题仅仅只是线程申请栈空间失败了的报错,而StackOverflowError是说一个线程申请的栈的深度大于允许深度。再进一步思考不难发现的是,这里似乎都存放着的都是Java中的方法相关的信息,因此Java虚拟机栈又被称为方法栈。原创 2024-06-12 22:46:47 · 673 阅读 · 0 评论