我已经阅读了关于明确地使垃圾收集的对象,在很多方面。所以我想知道一些明确垃圾收集的方法使对象明确垃圾回收的方法
回答
System.gc是告诉JVM明确执行垃圾回收器。
但对于一些方法我知道,使显式垃圾回收的对象是:
分配其引用,以指向空 EX:动物A =新的动物(); a = null
将其引用指定为指向另一个对象。 EX:动物a1 =新动物(); a1 = new Animal();
将对象的所有引用赋值为'null',仅使对象准备好被垃圾收集。它不会立即将垃圾收集起来,而且之后可以长时间保存在内存中。调用'System.gc()'也不能保证所有未被引用的对象都被收集。阅读其他答案。 – MAK 2010-02-04 19:50:50
没有办法显式垃圾收集。
可以“礼貌地询问”虚拟机做垃圾收集致电:
System.gc();
,但它不能保证它会的。
调用gc方法建议Java虚拟机花费大量的工作来回收未使用的对象,以便使其当前占用的内存可供快速重用。当控制从方法调用返回时,Java虚拟机已尽最大努力从所有被丢弃的对象中回收空间。
和“尽力而为”可能是推迟垃圾收集。
对于如何创建一个对象符合使用垃圾收集阅读Effective Java, Chapter 2
我喜欢“尽力而为”一词。这意味着“也许,如果我喜欢它”。 – 2010-02-04 19:48:34
您可以通过所有引用设置为它null
明确地使垃圾收集对象资格。
这不会调用垃圾收集器本身,但是当收集开始时,它将收集此对象。
你最好让Java垃圾收集器自动完成它。它已经被优化到能比任何你想要做的更好,更高效的地步。
除非你自己写一个像VisualVM这样的工具,否则你不应该担心强制GC。
NetBeans,IntelliJ,VisualVM和很多其他人都可以使用GC,而不是提示,但是确实有效。使用JVMTI你可以强制GC。
但是再一次你可能做不是想要做到这一点。
您强制使用JVMTI的ForceGarbageCollection的GC(而不是提示)。
这就是说,你可能真的不要想要做到这一点(它真的是重复)。
上,如果你真的想知道(但你可能不)如何给力,一个事实,一个GC主题权威信息:
http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#ForceGarbageCollection
- 1. 从RMI方法返回的空对象的垃圾回收
- 2. 在对话框中使用声明以确保垃圾回收
- 3. 内部对象的垃圾回收
- 4. Ruby:标记垃圾回收的对象
- 5. 有资格垃圾回收的对象
- 6. 因垃圾对象引用而导致的java垃圾回收
- 7. 垃圾收集器如何确定对象是否是垃圾?
- 8. 垃圾收集对象
- 9. 私人方法调用垃圾回收
- 10. 方法和垃圾收集
- 11. JDBC垃圾回收
- 12. Java:垃圾回收
- 13. C#垃圾回收
- 14. Java:垃圾回收
- 15. Erlang垃圾回收
- 16. java垃圾回收
- 17. Python垃圾回收
- 18. JS垃圾回收
- 19. Javascript垃圾回收
- 20. PhoneGap垃圾回收
- 21. java - 垃圾回收
- 22. 查找C#垃圾回收器回收了多少个对象
- 23. Android垃圾回收器,释放对象内的对象
- 24. 在Java中垃圾收集对象的方法
- 25. Android的垃圾收集对象
- 26. Perl中的垃圾回收
- 27. Java - 可用的垃圾回收算法
- 28. 如何使用反射垃圾回收来生成对象?
- 29. 在构造函数中声明的C#对象的垃圾回收
- 30. 垃圾收集资格对象
语言和实现你指的是什么?这里有很多的GC语言,每个实现都可以自由添加自己的非标准功能。 – 2010-02-04 19:42:30
对不起。但是我只选择了一个标签java。它意味着它与Java语言相关 – GuruKulki 2010-02-05 18:34:57