JAVA中垃圾收集的问题(会JAVA的进)

请运行程序。就知道我问的问题。。。
import java.lang.Runtime;

class Runtimedemo
{
public static void main(String args[])
{
int i=0;
//PrintWriter out;
System.gc();
System.out.println("开始运行前空闲内存量: " + Runtime.getRuntime().freeMemory());
System.out.println("程序开始运行:");
while(i<100)
{
i++;

System.out.print("."+i);
}
System.out.println();
System.out.println("运行结束!");
System.out.println("结束后空闲内存量: " + Runtime.getRuntime().freeMemory());

System.gc();
System.out.println("释放后空闲内存量: " + Runtime.getRuntime().freeMemory());

System.out.println(" 系统内存总量: " + Runtime.getRuntime().totalMemory());
System.out.println(" 系统其中还有"+(long)(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory())+"那里去了?");
}
}
请不要回答题外话。。。。

使用一个你知道它有与之相关联的本地资源(例如,一个GUI组件,文件,套接字)的对象,那么在使用完之后,一定要调用它的dispose()或equivalent方法。这将保证立即回收本地资源并且减小这些资源流失的可能性。

finalize是Java编程语言的一个特性:它允许你对垃圾收集器发现的不可达的对象进行最后清理。典型地用于回收与一对象相关联的本地资源。下面是一个简单的finalize示例:

public class Image1 {
//指向本地图像数据
private int nativeImg;
private Point pos;
private Dimension dim;
//它释放本地图像;
//随后对它的调用将被忽略
private native void disposeNative();
public void dispose() { disposeNative(); }
protected void finalize() { dispose(); }
static private Image1 randomImg;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-10-02
这个问题其实也很简单,Java的垃圾回收机制只有在内存不够的时候才会回来回收,就象男孩子的衣服一样,在还有衣服穿的时候一般是不会去洗的!
运行了一下你的程序,知道是这个原因,内存并没有被回收!我说的是现在,到你的内存不够用的时候就自然被Java回收了...
不好意思,我的Java也才只是入门!
相似回答