V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
michaelye1988
V2EX  ›  问与答

请教关于 Java ( Android)虚拟机 GC 中 non-generational 的理解

  •  
  •   michaelye1988 · 2017-04-04 13:37:05 +08:00 · 1640 次点击
    这是一个创建于 2550 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在翻译一本 Android 开发相关的书,遇到一处关于 GC 的地方不太理解,希望有人能解答一下困惑。

    原文:

    The Dalvik Virtual Machine also includes some Java Virtual Machine (JVM) features, such as garbage collection (GC). There has been a lot of criticism through the GC because of its non-generational nature; it's famous for driving developers crazy.

    我的翻译:

    Dalvik 虚拟机也包含了一些 Java 虚拟机的特性,例如垃圾回收( GC )。垃圾回收由于它的 non-generational 特性而饱受批评,该特性以给开发者带来痛苦而闻名。


    问题:对于“ non-generational ”该怎么理解呢?

    我的理解是:
    “ generational ”在 GC 中可以理解为对堆对象进行“分代”:年轻代,年老代。接着对于不同分代,采用不同的回收算法,以提高垃圾回收机制的效率。

    那么“ non-generational ”是否可以理解为“非分代”,也就是不对堆内存进行分代,这样回收算法的效率必然较低。结合上下文,是否可以理解为:非分代,导致垃圾回收效率低下,给开发者带来痛苦呢?

    但据我所知现在的 Java 虚拟机貌似都有进行分代,是不是之前的虚拟机没有进行分代呢?
    第 1 条附言  ·  2017-04-04 18:00:05 +08:00
    基本能确定是我所理解的那样,在 Android2.3 中,引入了对虚拟机的优化,采用并发的方式提高了垃圾回收的效率。

    以下是我查到的相关资料,分享给大家:

    https://developer.android.com/training/articles/perf-tips.html
    The concurrent garbage collector introduced in Android 2.3 helps, but unnecessary work should always be avoided.

    https://developer.android.com/about/versions/android-2.3-highlights.html
    Dalvik runtime
    Dalvik VM:
    Concurrent garbage collector (target sub-3ms pauses)
    Adds further JIT (code-generation) optimizations
    Improved code verification
    StrictMode debugging, for identifying performance and memory issues

    再次感谢 @sagaxu 的提醒,让我找到方向。
    2 条回复    2017-04-04 17:42:41 +08:00
    sagaxu
        1
    sagaxu  
       2017-04-04 15:03:59 +08:00 via Android   ❤️ 1
    很多年前的安卓内存是不分代的,因为小内存分代效果不明显
    michaelye1988
        2
    michaelye1988  
    OP
       2017-04-04 17:42:41 +08:00
    @sagaxu 学习了!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4087 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:21 · PVG 13:21 · LAX 22:21 · JFK 01:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.