返回信息流先发代码:
import java.awt.*;
import java.awt.event.*;
public class Two{
public static void main(String[] args) {
TriggerTime tt = new TriggerTime();
tt.start();
try {
Thread.sleep(100000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class TP implements ActionListener{
public void actionPerformed(ActionEvent event){
System.out.println("trigger");
}
}
class TriggerTime{
public void start(){
ActionListener list = new TP();
javax.swing.Timer t = new javax.swing.Timer(1000, list);
t.start();
}
}
编译,运行之后,能一秒打印一次 trigger。
不过问题是:
我的事件监听者也就是那个
ActionListener list = new TP();
和那个事件源也就是那个
javax.swing.Timer t = new javax.swing.Timer(1000, list);
都是在一个方法中new出来的,方法结束后,一般来说,我没有传出这两个对象的引用,那么虚拟机不是应该回收这俩对象么。那么这种时刻,并没有回收,但是我也找不到这两个对象的引用了,这种算不算是内存泄漏,还是有什么其他的机制?
高手帮忙解惑一下,thanks~
这是一条镜像帖。来源:北邮人论坛 / java / #44634同步于 2015/10/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
javax.swing.Timer的一个问题
YiYeShu
2015/10/11镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
那这个时候,我怎么去找到这个对象呢,好像这个对象就没法被我使用了。
【 在 xiahui 的大作中提到: 】
: 遇到未引用的对象,Java虚拟机是可以回收的,但是它不保证何时回收,也无法强制它回收,即使调用回收方法,也不保证立即回收。