V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuwei0056
V2EX  ›  Java

关于 jvm 的一个问题,求解

  •  
  •   xuwei0056 · 2020-04-26 21:16:27 +08:00 · 2326 次点击
    这是一个创建于 1432 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ygc 的过程中有没有对 无用对象 进行回收?
       在《深入理解 jvm 》中看到的年轻代 gc 都是在标记-复制和标记-整理,而标记-清除都是在老年代 gc 完成的。所以目前得到的结论是只有 fullgc 的时候才会对对象内存进行回收。
       不知道这个结论是不是正确,如果错误请大佬指点一二。如果是对的,那不在 ygc 的时候进行回收而是一代一代的复制在回收呢。再次请大佬们指点

    7 条回复    2020-04-27 08:24:55 +08:00
    Takamine
        1
    Takamine  
       2020-04-26 21:26:55 +08:00
    年轻代也会进行回收,你说的标记复制指的是把存活对象复制到另外一片区域后对之前的整块区域清除,这样可以减少内存碎片。标记整理(压缩),是另外一种在清除之后再整理的处理方式。
    年轻代会频繁发生 GC,进行清掉 Eden 区并把存活对象赶到 Survivor 区( 0,1 对调)的操作。
    在 G1 开始之后分代假设的堆内存分配不是连续的而是分为不同的 region,有一点点变化。
    Takamine
        2
    Takamine  
       2020-04-26 21:31:23 +08:00   ❤️ 1
    xuwei0056
        3
    xuwei0056  
    OP
       2020-04-26 21:37:07 +08:00
    @Takamine 感谢大佬回复
    zifangsky
        4
    zifangsky  
       2020-04-26 21:56:38 +08:00
    young GC 也有对垃圾对象回收。另外,给你再推荐一本学习 JVM 的好书——《实战 Java 虚拟机》,这本书的示例和图表很多,很容易理解。
    iffi
        5
    iffi  
       2020-04-26 22:08:20 +08:00
    我在官网只看到过 minor GC 、major GC 、Full GC
    xuwei0056
        6
    xuwei0056  
    OP
       2020-04-26 22:26:01 +08:00
    @iffi 就是 minor gc,哈哈
    AAASUKA
        7
    AAASUKA  
       2020-04-27 08:24:55 +08:00
    标记-复制和标记-整理其实也有清除,叫做标记-清除-复制,标记-清除-整理你就明白了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5165 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:30 · PVG 17:30 · LAX 02:30 · JFK 05:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.