- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
深入JVM内核——原理、诊断与优化第4周
法律声明【声明】本视频和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,不得在课程以外范围散播,违者将可能被追究法律和经济责任。课程详情访问炼数成金培训网站
GC算法与种类GC的概念GC算法引用计数法标记清除标记压缩复制算法可触及性Stop-The-World
GC的概念GarbageCollection垃圾收集1960年List使用了GCJava中,GC的对象是堆空间和永久区
引用计数法老牌垃圾回收算法通过引用计算来回收垃圾使用者COMActionScript3Python
引用计数法引用计数器的实现很简单,对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器就减1。只要对象A的引用计数器的值为0,则对象A就不可能再被使用。根对象可达的有效对象根对象可达的有效对象根对象可达的有效对象
引用计数法引用计数法的问题引用和去引用伴随加法和减法,影响性能很难处理循环引用根对象可达的有效对象2根对象可达的有效对象根对象可达的有效对象1
标记-清除标记-清除算法是现代垃圾回收算法的思想基础。标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。一种可行的实现是,在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象。因此,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象。
标记-清除空闲空间垃圾对象存活对象根节点根节点
标记-压缩标记-压缩算法适合用于存活对象较多的场合,如老年代。它在标记-清除算法的基础上做了一些优化。和标记-清除算法一样,标记-压缩算法也首先需要从根节点开始,对所有可达对象做一次标记。但之后,它并不简单的清理未标记的对象,而是将所有的存活对象压缩到内存的一端。之后,清理边界外所有的空间。
标记-压缩空闲空间垃圾对象存活对象
标记-压缩标记压缩对标记清除而言,有什么优势呢?
复制算法与标记-清除算法相比,复制算法是一种相对高效的回收方法不适用于存活对象较多的场合如老年代将原有的内存空间分为两块,每次只使用其中一块,在垃圾回收时,将正在使用的内存中的存活对象复制到未使用的内存块中,之后,清除正在使用的内存块中的所有对象,交换两个内存的角色,完成垃圾回收
复制算法空闲空间垃圾对象存活对象两块空间完全相同,每次只用一块
复制算法复制算法的最大问题是:空间浪费整合标记清理思想老年代大对象空闲空间垃圾对象存活对象老年代大对象
复制算法-XX:+PrintGCDetails的输出Heapdefnewgenerationtotal13824K,used11223K[0x27e80000,0x28d80000,0x28d80000)edenspace12288K,91%used[0x27e80000,0x28975f20,0x28a80000)fromspace1536K,0%used[0x28a80000,0x28a80000,0x28c00000)tospace1536K,0%used[0x28c00000,0x28c00000,0x28d80000)tenuredgenerationtotal5120K,used0K[0x28d80000,00thespace5120K,0%used[0x28d80000,0x28d80000,0x28d80200,0compactingpermgentotal12288K,used142K[000thespace12288K,1%used[00x346a3a90,0x346a3c00,0rospace10240K,44%used[00x38af73f0,0x38af7400,0rwspace12288K,52%used[00x396cdd28,0x396cde00,0x39c80000)12288K+1536K(0x28d80000-0x27e80000)/1024/1024=15M
分代思想依据对象的存活周期进行分类,短命对象归为新生代,长命对象归为老年代。根据不同代的特点,选取合适的收集算法少量对象存活,适合复制算法大量对象存活,适合标记清理或者标记
文档评论(0)