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

王朝知道·作者佚名  2009-08-13
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

请运行程序。就知道我问的问题。。。

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;

}

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航