![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《深入理解Java虚拟机》第三版-总结笔记
文章平均质量分 54
《深入理解Java虚拟机》第三版-总结笔记
zh_ly
这个作者很懒,什么都没留下…
展开
-
3.6低延迟垃圾收集器
3.6低延迟垃圾收集器衡量垃圾收集器的三项最重要的指标:内存占用、吞吐量、延迟1、Shenandoah收集器Shenandoah使用和和G1一样的基于Region的堆内存布局,也存在有用于存放大对象的Humongous Region,默认的回收策略同样是优先处理回收价值最大的Region。但与G1不同的是:①支持并发的整理算法②默认不支持分代收集③摒弃了G1收集器中耗费大量内存和、计算资源的记忆集,改用名为“记忆矩阵”的全局数据结构进行跨Region引用的记录。降低了处理跨代引用指针的记忆集维原创 2022-04-26 15:44:39 · 64 阅读 · 0 评论 -
3.5经典垃圾收集器
3.5经典垃圾收集器并行:描述的时垃圾收集线程之间的关系,标识多条垃圾回收线程再协同工作,此时默认用户线程时处于等待状态的。并发:描述的是垃圾回收线程和用户线程的关系,说明同一时间垃圾收集线程和用户线程同时工作。1、Serial收集器 特点: *历史最悠久的垃圾收集器 *进行垃圾回收时会暂停所有工作线程(stop the world)原创 2022-04-26 15:44:06 · 48 阅读 · 0 评论 -
3.3垃圾收集算法
3.3垃圾收集算法1、分代收集理论①当前商业虚拟机的垃圾收集器大部分遵循了“分代收集”的理论,该理论建立在以下两个假说上——弱分代假说:绝大多是对象都是朝生夕灭( ①早晨刚生,晚上就死亡。②形容事物生命短暂。)的——强分代假说:熬过越多次垃圾收集的对象就越难以消亡以上两种假说共同奠定了多款垃圾回收器一致的设计原则:——收集器应该将java堆划分为多个不同的区域,将对象依据其年龄分配到不同的区域中去存储②对象间不可能是孤立的,对象间会存在跨代引用——跨代引用假说:跨代引用相对于同代引用仅占极少原创 2022-04-26 15:43:27 · 54 阅读 · 0 评论 -
3.2对象已死?
3.2对象已死?1、对象死亡判定①引用计数算法:在对象里添加一个引用计数器。每当有一个地方引用它时计数器加一;当引用失效时计数器减一;任何时候当计数器值为零时对象被判定为死亡优点:原理简单,判定效率高缺点:无法解决两个本应该死亡的对象间相互引用的问题②可达性分析算法:通过一系列称为“GC ROOT”的根对象节点集,通过引用关系向下搜索,搜索过程中通过的路径称为“引用链”如果某个对象没有通过引用链与根节点相连接(即图论中的不可达),则证明此对象已经不能被使用在JAVA技术体系中可固定作为GC原创 2022-04-27 11:20:25 · 56 阅读 · 0 评论 -
2.3 HotSpot虚拟机对象探秘
2.3 HotSpot虚拟机对象探秘1、对象的创建①当虚拟机遇到一条自己吗new指令时首先会检查,这个指令参数是否能在常量池中定位到一个类的符号引用、并检查这个符号引用代表类是否已经加载、解析、初始化过、如果没有则需要先进行相应的类加载过程②为新生对象分配内存(对象所需内存大小在类加载之后就已经被确定)③虚拟机堆对象进行必要的设置④执行初始化方法(构造方法),按照程序员的需求对对象进行初始化2、Java堆内存划分指针碰撞:Java堆中内存绝对规整,被使用过的内存放在一边,空闲的内存放在另一边原创 2022-04-25 17:17:15 · 997 阅读 · 0 评论 -
2.2 JAVA内存区域
2.2 JAVA内存区域1、程序计数器作用:当前线程所执行的字节码的行号指示器,用来选取下一条需要执行的字节码指令每个线程独立拥有不会出现任何OutofMemoryError2、java虚拟机栈作用:java方法执行的线程内存模型,每一个方法被调用直至执行完毕的过程,就对应着一个栈帧从入栈到出栈的过程每个线程独立拥有如果线程请求的栈深度大于虚拟机允许的深度就会抛出 StackOverFlowError如果栈扩展时无法申请到足够的内存就会抛出OutofMemoryError3、本地方法原创 2022-04-25 17:16:38 · 63 阅读 · 0 评论