我有一个创建线程以执行某些工作的应用程序。工作完成后,我终止了线程。问题是每次我杀死线程时,堆似乎都增加了10k?为了进一步测试,我在1ms处理程序中执行了以下操作。

TestThread new_thread = new TestThread();
new_thread = null;


每次运行此命令时,都会看到DDMS下的堆增加。 TestThread什么也不做。它没有代码。它只是一个空线程。

import android.util.Log;

public class TestThread extends Thread {

    public TestThread () {
    Log.d("TESTTHREAD","Constructed");
    }

    public void run() {
        Log.d("TESTHREAD","Run");
    }
}


知道为什么会这样吗?

最佳答案

不建议使用myThread.stop()方法,因为它可能会将应用程序置于
不可预测的状态。而是在需要时使用以下内容,例如在onStop()中
父组件的方法:

//use to stop the thread myThread
if(myThread != null) {
    Thread dummy = myThread;
   myThread = null;
    dummy.interrupt();
}

10-07 23:57