-
Notifications
You must be signed in to change notification settings - Fork 7.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于标记-清除算法的疑问 #131
Comments
标记的应该是不被回收的对象 |
在《深入理解Java虚拟机》第2版书中,69页写的是:
|
这个问题有点意思,我查阅了一些资料。 这里有一个维基百科的图片:
从图片和内容中确实表述的也是标记可达对象,也就是不可回收对象。 这里也是谈到只标记可达对象。 但是如 @PansonPanson 所说在《深入理解Java虚拟机》第2版中确实写的是标记所有要回收的对象 结合目前查阅到的一些国外资料来看,我也认为标记的是不可回收对象。 |
标记的应该还是可回收对象,如果不是这么操作,那如何解决未标记的新对象被清理的问题, |
不管标记可回收还是不可回收对于清除来说都没影响,反正他们肯定是分开的,能分开就知道回收哪些了。 |
@apt-getyou 另外如果是标记要回收的对象,那么需要逆向逻辑,要确定所有的其他对象都没有引用这个对象,才能确定是否要回收,这样的算法复杂度是多少呢? |
可以提一个 PR 修复这个描述。 |
原文是这样的,
标记阶段是从GC Roots开始做可达性分析,标记的应该是不要回收的对象;
参考这篇文章可能说得比较清晰,标记-清除算法
The text was updated successfully, but these errors were encountered: