1
A
回答
1
在Java虚拟机中,所有数据都是键入的,这意味着JVM可以将引用与其他数据区分开来。能够区分对其他数据的引用是垃圾收集成为可能的几乎必要的要求。
垃圾回收器遍历堆,堆栈和常量池,搜索引用。通常,所有被引用的对象都被标记。然后标记的对象遍历引用,并且引用的对象又被标记。
如果没有未跟踪的引用,则可以确保所有未标记的对象不再可访问并且可以处置。
这可能是最基本的垃圾收集形式,称为标记和清扫垃圾收集器。
请注意,Java标准不要求存在垃圾回收器。实现该标准的JVM永远不会释放任何内存。
+0
谢谢,你的确如我所期待的那样 – user3314027
0
这里必须有一百个答案,但也许没有一个很简单 - 有很多复杂的方法来解释这:)。我会试一试,以便在此问题被标记为重复之前,您可以看到它。
- 它需要的东西,它知道你“想要”就像一个可见的窗口或一个活动线程 。在更复杂的答案中有这些事情的明确列表。
- 它列出了可能访问这些重要的点的方法。
- 它删除了其他的东西。
2
有许多策略,但通常它会遍历对象图(通过从称为GC根的特殊对象开始)并标记它可以在图中找到的那些对象。堆中没有标记的任何对象本质上都是垃圾,因为它无法从对象图中的任何其他对象访问。
如需更详细的治疗,请查看Oracle's documentation on the JVM's garbage collector和this article。
相关问题
- 1. Android - 检测垃圾收集
- 2. 垃圾收集器
- 3. 垃圾收集
- 4. 垃圾收集器如何确定对象是否是垃圾?
- 5. 垃圾收集java
- 6. DoctrineCommonCache垃圾收集?
- 7. Java垃圾收集
- 8. C#垃圾收集
- 9. Java垃圾收集
- 10. WeakEvent垃圾收集
- 11. GWT垃圾收集
- 12. Renderscript和垃圾收集器
- 13. 垃圾收集器闪存
- 14. 垃圾收集器asp.net
- 15. Node.js的垃圾收集器
- 16. 垃圾收集器vs池
- 17. .NET垃圾收集器
- 18. 垃圾收集器Flash Player
- 19. Jruby,垃圾收集器,Redis
- 20. SpiderMonkey垃圾收集器
- 21. 垃圾收集YGCT和垃圾收集时间不断上升
- 22. 如何配置.net垃圾收集器?
- 23. 如何禁用Java垃圾收集器?
- 24. 垃圾收集器如何识别根
- 25. 如何检测使用哪个垃圾收集器?
- 26. 垃圾收集是由
- 27. 垃圾收集提交git
- 28. 从垃圾收集日志
- 29. 垃圾收集缓存WeakMaps
- 30. SoftReference太早收集垃圾
您从Google搜索中了解到什么? – AntonH
垃圾是除了你仍然从你的线索引用的东西之外的所有东西。 –
http://javabook.compuware.com/content/memory/how-garbage-collection-works.aspx – Brandon