深入理解Java虚拟机
文章平均质量分 87
open_the_windows
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深入理解Java虚拟机-1:Java内存区域
前言阅读《深入理解Java虚拟机》相关笔记.内存区域Java运行时内存区域程序计数器虚拟机栈本地方法栈堆方法区程序计数器线程级别可以看作是当前线程所执行的字节码的行号指示器。《Java虚拟机规范》唯一没有规定任何OutOfMemoryError情况的区域。虚拟机栈线程级别局部变量表…线程所请求的栈深度大于虚拟机所允许的深度,抛出StackOverflowError。如果栈容量可以动态扩展,无法申请到足够的内存,抛出OutOfMemoryError。本地方法栈原创 2021-04-05 16:40:01 · 118 阅读 · 0 评论
-
深入理解Java虚拟机-4:垃圾回收器与内存分配策略(3)HotSpot算法实现
前言阅读《深入理解Java虚拟机》相关笔记。根节点枚举固定可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)。迄今为止,所有收集器在根节点枚举这一步骤都是必须暂停用户线程的。目前主流的Java虚拟机使用的都是准确式垃圾收集(虚拟机可以知道内存中某个位置的数据具体是什么类型),当用户线程停顿下来时,其实并不需要一个不漏的检查完所有执行上下文和全局的引用位置,虚拟机是有办法直接得到哪些地方存放着对象引用的。HotSpot使用一组称为OopMa原创 2021-04-19 23:28:06 · 141 阅读 · 0 评论 -
深入理解Java虚拟机-2:垃圾回收器与内存分配策略(1)收集对象
前言阅读《深入理解Java虚拟机》相关笔记。判断哪些对象应该呗收集。原创 2021-04-15 23:35:07 · 218 阅读 · 2 评论 -
深入理解Java虚拟机-3:垃圾回收器与内存分配策略(2)垃圾收集算法
前言阅读《深入理解Java虚拟机》相关笔记。程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊的执行出栈和入栈操作。二米一个栈帧中分配多少内存基本是在类结构确定下来时就已知的(尽管在运行期间会由即时编译器进行一些优化,但在基本概念模型的讨论里,大体上可以认为编译器已知的),不需要考虑回收,当方法结束或线程结束时,内存自然就跟随着回收了。而Java堆和方法区这两个区域则有着很显著的不确定性:一个接口的多个实现类需要的内存可能会不一样,一个方法所执行的原创 2021-04-12 22:48:09 · 150 阅读 · 0 评论
分享