请教关于GC的问题

03-11-10 cash
想请教各位 Garbage Collection 的处理方式,不是很清楚书上写的东西(Thinking In Java ver3)

书上说, garbage collector 是利用 heap 处理 object, 传送带, 每多生一

个 object pointer 就往前挪一点, 所以和 C++ stack 的 allocation 一样有效率.

我想请教的是, 为什么是 heap 而不是 queue or list? 是因为 storage 方式的

关系吗? 还有, 像是 adaptive garbage-collection scheme 中的 mark-

and-sweep, stop-and-copy 是怎么运做的

麻烦大家为我指点...谢谢.

ppqq
2003-11-10 22:44
想请教各位 Garbage Collection 的处理方式,不是很清楚书上写的东西(Thinking In Java ver3)

书上说, garbage collector 是利用 heap 处理 object, 传送带, 每多生一

个 object pointer 就往前挪一点, 所以和 C++ stack 的 allocation 一样有效率.

我想请教的是, 为什么是 heap 而不是 queue or list? 是因为 storage 方式的

关系吗? 还有, 像是 adaptive garbage-collection scheme 中的 mark-

and-sweep, stop-and-copy 是怎么运做的

麻烦大家为我指点...谢谢.

GC我的理解就是hotspot会在heap上开辟一个叫做eden的内存区域,因为这块内存区的工作方式和stack很像,所以效率会比较高。但它确实是在heap上进行的,java的非静态object都是在heap上的。

mark-and-sweep指的是在old generation中的清除,就是将已死亡object的内存记到一个空闲空间列表里,有点像文件系统管理空闲块一样,将那几个区域直接标记为可用。

不知道我的理解有没有错。

至于stop-and-copy,惭愧,没听过,盼高手指点。

猜你喜欢