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

2017-04-04 13:37:05 +08:00
 michaelye1988
最近在翻译一本 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 虚拟机貌似都有进行分代,是不是之前的虚拟机没有进行分代呢?
1812 次点击
所在节点    问与答
2 条回复
sagaxu
2017-04-04 15:03:59 +08:00
很多年前的安卓内存是不分代的,因为小内存分代效果不明显
michaelye1988
2017-04-04 17:42:41 +08:00
@sagaxu 学习了!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/352424

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX