【发布时间】:2016-09-02 03:07:04
【问题描述】:
我正在使用以下代码在我的应用程序中设置时间部分。但是下面的代码会逐渐泄漏内存。是因为Jlabel中的setText()吗?
谁能帮我找出错误?
另外请告诉我如何在java中释放Dateformat和Date的内存。
Thread th= new Thread(new Runnable() {
public void run() {
DateFormat dateformat_s2= null;
Date date_int_s2=null;
String date_time_s2=null;
while(c==1) {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
dateformat_s2= new SimpleDateFormat("dd:MM:yyyy HH:mm:ss");
date_int_s2= new Date();
date_time_s2 = dateformat_s2.format(date_int_s2);
time_end_label.setText(""+date_time_s2);
date_time_s2=null;
dateformat_s2=null;
date_int_s2=null;
}
}
});
【问题讨论】:
-
"以下代码逐渐泄漏内存。"你怎么测试这个?可以打印 Full GC 后使用了多少内存吗?
-
顺便说一句,您不应该在不同的线程上更新 GUI 组件。我建议只在 GUI 上更新。
-
你不需要释放'dateformat'或'date'的内存。Java中的垃圾收集器会在空闲时自动排序。
-
它是因为日期对象。当它被转换成字符串时,内存不会被 GC 释放。我该怎么做才能释放日期对象的内存
标签: java datetime memory-management memory-leaks labels