- 1、本文档共85页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
前⾔
⼤家好,我是楼仔!
JVM 系列是我去年写的,整个学习周期是⼀个半⽉,作为 Java 必备技能之⼀,⾮常重要,所以感觉有必要对之前
的 JVM 系列重新整理。
⽂章内容,⼀个字 —— 肝!
这么说吧,⽬前我还没有发现哪⼀篇 JVM ⽂章,整理的⽐这篇更好,如果有,请⼀定私我。
如果你想了解 JVM 所有的知识,直接看最后⼀章 《第 8 章:JVM 总览》。
不 BB ,上思维导图:
第 1 章:JVM 内存结构
主要讲述JVM 内存结构,以及简单的调优场景。
JVM 系列应该属于Java ⾼阶的内容,本来是想等Java 基础知识积累⼀段时候之后再学习,但是因为⼯作中需要跟进
线上问题,所以急需补充这块知识,本⽂主要是对学习的知识简单做个记录,然后再记录分析问题的过程。
JVM 问题
刚转到⼩⽶⼈事部⻔,发现线上的2台机器⼀直在GC,⽽且频率⾮常⾼,下⾯是GC的⽇志:
如果需要看懂这个GC ⽇志,下⾯的内容就⼀定需要掌握。
垃圾回收算法
如何确定对象已死?
通常,判断⼀个对象是否被销毁有两种⽅法:
引⽤计数算法:为对象添加⼀个引⽤计数器,每当对象在⼀个地⽅被引⽤,则该计数器加1 ;每当对象引⽤失
效时,计数器减1。但计数器为0的时候,就表⽩该对象没有被引⽤。
可达性分析算法:通过⼀系列被称之为“GC Roots”的根节点开始,沿着引⽤链进⾏有哪些信誉好的足球投注网站,凡是在引⽤链上的
对象都不会被回收。
就像上图的那样,绿⾊部分的对象都在GC Roots的引⽤链上,就不会被垃圾回收器回收,灰⾊部分的对象没有在引
⽤链上,⾃然就被判定为可回收对象。
那么,问题来了,这个GC Roots⼜是什么?下⾯列举可以作为GC Roots的对象:
Java 虚拟机栈中被引⽤的对象,各个线程调⽤的参数、局部变量、临时变量等。
⽅法区中类静态属性引⽤的对象,⽐如引⽤类型的静态变量。
⽅法区中常量引⽤的对象。
本地⽅法栈中所引⽤的对象。
Java 虚拟机内部的引⽤,基本数据类型对应的Class对象,⼀些常驻的异常对象。
被同步锁(synchronized)持有的对象。
垃圾回收算法
标记--清除算法
⻅名知义,标记--清除算法就是对⽆效的对象进⾏标记,然后清除。
对于标记--清除算法,你⼀定会清楚看到,在进⾏垃圾回收之后,堆空间有⼤量的碎⽚,出现了不规整的情况。在
给⼤对象分配内存的时候,由于⽆法找到⾜够的连续的内存空间,就不得不再⼀次触发垃圾收集。另外,如果Java
堆中存在⼤量的垃圾对象,那么垃圾回收的就必然进⾏⼤量的标记和清除动作,这个势必造成回收效率的降低。
复制算法
标记--复制算法就是把Java 堆分成两块,每次垃圾回收时只使⽤其中⼀块,然后把存活的对象全部移动到另⼀块区
域。
标记--复制算法有⼀个很明显的缺点,那就是每次只使⽤堆空间的⼀半,造成了Java 堆空间使⽤率的的下降。
标记--整理算法
标记--整理算法算是⼀种折中的垃圾收集算法,在对象标记的过程,和前⾯两个执⾏的是⼀样步骤。但是,进⾏标
记之后,存活的对象会移动到堆的⼀端,然后直接清理存活对象以外的区域就可以了。这样,既避免了内存碎⽚,
也不存在堆空间浪费的说法了。但是,每次进⾏垃圾回收的时候,都要暂停所有的⽤户线程,特别是对⽼年代的对
象回收,则需要更⻓的回收时间,这对⽤户体验是⾮常不好的。
垃圾回收器
HotSpot VM中的垃圾回收器,以及适⽤场景:
内存模型
内存模型
堆内存模型
内存模型⼏个重要点:
JVM 内存会划分为堆内存和⾮堆内存,堆内存中也会划分为年轻代和⽼年代,⽽⾮堆内存则为永久代。
新⽣代Young和⽼年代Old默认占⽐是1:3。
年轻代⼜会分为Eden和Survivor区,Survivor也会分为FromPlace和ToPlace ,Eden、FromPlace和ToPlace
的默认占⽐为 8:1:1 。
GC类型
Minor GC/Young GC :针对新⽣代的垃圾收集;
Major GC/Old GC :针对⽼年代的垃圾收集。
Full GC :针对整个Java 堆以及⽅法区的垃圾收集。
Minor GC⼯作原理
通常情况下,初次被创建的对象存放在新⽣代的Eden区,当第⼀次触发Minor GC,Eden区存活的对象被转移到
Survivor区的某⼀块区域。以后再次触发Minor GC的时候,Eden区的对象连同⼀块Survivor区的对象⼀起,被转
移到了另⼀块Su
您可能关注的文档
- Java 并发编程手册.pdf
- 操作系统OS面试题八股文.pdf
- Java 虚拟机-JVM面试题八股文.pdf
- Java并发编程面试题八股文.pdf
- Java基础面试高频题.pdf
- Java集合框架面试题八股文.pdf
- Redis面试题八股文.pdf
- RocketMQ面试题八股文.pdf
- Spring面试题八股文.pdf
- 计算机网络面试题八股文.pdf
- 2025年广西(来宾市)高校毕业生“三支一扶”计划招募102人考试备考题库及答案解析.docx
- 2025广西南宁市武鸣区特岗教师招聘80人考试备考题库及答案解析.docx
- 2025北京农学院后勤基建处招聘编制外人员1人考试备考题库及答案解析.docx
- 2025杭州上城区交通辅助人员招聘84人考试备考题库及答案解析.docx
- 2025福建漳州环境集团有限公司第一批次劳务派遣人员招聘52人考试备考题库及答案解析.docx
- 2025年亳州市黉学高级中学招聘8人考试备考题库及答案解析.docx
- 2025南平建瓯市建州技术学校招聘30人考试备考题库及答案解析.docx
- 2025湖北东风汽车集团股份有限公司采购管理部招聘2人考试备考题库及答案解析.docx
- 2025广西南宁市西乡塘区人民法院招聘司法辅助人员考试备考题库及答案解析.docx
- 2025福建漳州龙海区浒茂中学招聘16人考试备考题库及答案解析.docx
文档评论(0)