销毁Date对象

时间:2017-09-03 13:28:57

标签: java android multithreading date java-threads

我需要一些关于此代码的建议:

Thread myClock = new Thread() {
  @Override
  public void run() {
    try {
      while (!isInterrupted()) {
        Thread.sleep(1000);
        runOnUiThread(new Runnable() {
          @Override
          public void run() {
            Date dt = new Date();
            SimpleDateFormat myClockDate = new SimpleDateFormat("EEE, dd MMM yyyy");
            SimpleDateFormat myClockTime = new SimpleDateFormat("hh:mm aa");
            myClock_date.setText("Date:  " + myClockDate.format(dt));
            myClock_time.setText("Time:  " + (myClockTime.format(dt)).replace(".", ""));
          }
        });
      }
    } catch (InterruptedException e) {

    }
  }
};

它运行良好但是当线程运行时,内存监视器显示出一致的使用上升和下降。当它没有运行时,显示器会变平。

我想知道是否连续创建导致此问题的日期对象?是否需要销毁或释放?

PS:GPU监视器已被禁用。

1 个答案:

答案 0 :(得分:3)

您的代码每秒创建一个Runnable,一个Date和两个DateFormat对象。字符串操作也可以创建一些对象。一旦Runnable完成那些被切断的松散(Runnable之外没有任何东西可以引用它们)并且有资格进行垃圾收集。你不需要做任何进一步的事情来释放他们的记忆。在每个Runnables完成后,您应该看到内存使用量返回到同一级别。

垃圾收集不是立竿见影的。只要你没有看到持续的上升趋势,它就可以了。