有方法可以知道堆里已经失去引用的对象已经被垃圾回收了吗?? 目前我好象有必要知道。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 钻到jvm里面去看看,找个问题我也想知道 一直不知道 请高手解答 不知道,期待回不回收是JVM决定的 深入java虚拟机,但是这个东西sun没开源,很难搞懂吧 用finalize()方法可以知道,它被声明为protected,finalize()会在对象被回收时执行,,但是不能将它当作析构函数使用,因为不知道对象资源何时被回收,所以也就不知道finalize() 真正被执行的时间,也就无法立即执行所指定的资源回收动作。 但是可以使用finalize()来进行一些相关资源的清楚动作。范例public class Gctext{ private String name; public Gctest(String name) { this.name = name; System.out.println(name + "建立"); } //对象回收前执行 protected void finalize(){ System.out.println(name + "被回收"); }}//做个简单的执行测试public class UseGc{ public static void main(String[] args){ System.out.println("请按Ctrl + c终止程序") GcTest obj1 = new GcTest("Object1"); GcTest obj2 = new GcTest("Object2"); GcTest obj3 = new GcTest("Object3"); //命令名称不参考至对象 obj1 = null; obj2 = null; obj3 = null;//建议回收对象 System.gc(); while(true);//不断执行程序 }}程序结果如下请按Ctrl + c 终止程序bject1 建立bject2 建立bject3 建立bject3 被回收bject2 被回收bject1 被回收(楼主可以试试finalize()的这个方法去检验一下引用的对象是否已经被回收) 在命令行中用命令:java -verbosegc 类名 java -verbosegc :::这个能看出什么。 用installanywhere打包过程中执行文件出现权限问题 java中final关键字的变量 什么叫main方法测试class和表现方法如何执行 输入问题?(急)请大家帮帮忙吧!!!java编译环境工具配置问题 我执行java程序的问题 大家唻说说大小写敏感吧! 新手,求助,SQL数据库中表输出问题 我怎么控制在panel上显示图片? vb字符集是什么? 请教有关 java 内部类的问题 audioinputstream 播放mp3的暂停功能 帮忙看一下代码会什么会有异常?
但是可以使用finalize()来进行一些相关资源的清楚动作。范例public class Gctext{
private String name; public Gctest(String name) {
this.name = name;
System.out.println(name + "建立"); } //对象回收前执行
protected void finalize(){
System.out.println(name + "被回收");
}
}//做个简单的执行测试
public class UseGc{
public static void main(String[] args){
System.out.println("请按Ctrl + c终止程序") GcTest obj1 = new GcTest("Object1");
GcTest obj2 = new GcTest("Object2");
GcTest obj3 = new GcTest("Object3");
//命令名称不参考至对象
obj1 = null;
obj2 = null;
obj3 = null;//建议回收对象
System.gc(); while(true);//不断执行程序
}
}程序结果如下
请按Ctrl + c 终止程序
bject1 建立
bject2 建立
bject3 建立
bject3 被回收
bject2 被回收
bject1 被回收
(楼主可以试试finalize()的这个方法去检验一下引用的对象是否已经被回收)
这个能看出什么。