读书笔记-《深入理解java虚拟机》
无情的腿毛
要学的东西咋这么多?事儿te
展开
-
读书笔记《深入理解Java虚拟机》 (二)对象创建、内存布局、访问定位
对象的创建类加载检查检查这个指令的参数是否能在常量池中定位到一个类的引用 检查这个符号引用代表的类是否已被加载、解析和初始化过, 如果没有,那必须先执行相应的类加载过程 确定对象所需内存的大小为新生对象分配内存 初始化对象的字段, 大概例如 int类型的初始值0就是在这里初始化的吧 对对象进行必要的设置,设置对象头信息(对象的哈希码、GC分代年龄等) 执行<init>...原创 2018-12-08 16:46:56 · 133 阅读 · 0 评论 -
读书笔记《深入理解Java虚拟机》 (三)垃圾回收器与内存分配策略
对象是否可回收(指那些不可能再被任何途径使用的对象)引用计数算法给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时就减1;当等于0时就认为对象不可能再被使用。问题:当两个对象相互引用时,就无法回收了。 jvm没有使用这个算法判断对象是否应该回收。可达性分析算法通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称...原创 2018-12-08 21:20:41 · 143 阅读 · 0 评论 -
读书笔记《深入理解Java虚拟机》 (一)JAVA内存区域与内存溢出异常
.结构图来自原书线程私有区域(生命周期与线程相同)程序计数器 虚拟机栈 本地方法栈所有线程共享方法区 堆 程序计数器(线程私有)是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。 由于JAVA虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,任何一个确定的时刻,一个处理器只会执行一条线程指令。 JAVA虚拟机栈...原创 2018-12-05 23:24:53 · 149 阅读 · 0 评论