Questions tagged «garbage-collection»

垃圾回收(GC)是一种自动内存管理形式,它尝试回收垃圾或程序不再使用的对象所占用的内存。

2
尽管使用了WeakHashMap,但仍发生OutOfMemoryException
如果不调用System.gc(),系统将抛出OutOfMemoryException。我不知道为什么需要System.gc()显式呼叫;JVM应该gc()自称对吧?请指教。 以下是我的测试代码: public static void main(String[] args) throws InterruptedException { WeakHashMap<String, int[]> hm = new WeakHashMap<>(); int i = 0; while(true) { Thread.sleep(1000); i++; String key = new String(new Integer(i).toString()); System.out.println(String.format("add new element %d", i)); hm.put(key, new int[1024 * 10000]); key = null; //System.gc(); } } 如下所示,添加-XX:+PrintGCDetails以打印出GC信息;如您所见,实际上,JVM尝试执行完整的GC运行,但是失败;我仍然不知道原因。如果我取消注释该System.gc();行,结果是肯定的,这很奇怪: add new element …

1
析构函数的垃圾收集器行为
我有一个简单的类,定义如下。 public class Person { public Person() { } public override string ToString() { return "I Still Exist!"; } ~Person() { p = this; } public static Person p; } 在主要方法中 public static void Main(string[] args) { var x = new Person(); x = null; GC.Collect(); GC.WaitForPendingFinalizers(); Console.WriteLine(Person.p == null); …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.