Debugging 在Android中调试时,有没有办法释放线程使用的内存?

Debugging 在Android中调试时,有没有办法释放线程使用的内存?,debugging,memory-leaks,bitmap,garbage-collection,Debugging,Memory Leaks,Bitmap,Garbage Collection,我在调试Android应用程序时遇到了一些问题,该应用程序在位图上运行一系列内存密集型操作。从谷歌那里,我知道这一点 调试器和垃圾收集器目前是松散集成的。VM保证在调试器断开连接之前,不会对调试器知道的任何对象进行垃圾收集。当调试器连接时,这可能会导致对象随时间累积。例如,如果调试器看到一个正在运行的线程,即使在线程终止后,关联的线程对象也不会被垃圾收集 不幸的是,这意味着,虽然我的应用程序在发布模式下运行良好,但在调试模式下运行的任何内存密集型线程都将被垃圾收集器忽略并保留,因此随着越来越多的

我在调试Android应用程序时遇到了一些问题,该应用程序在位图上运行一系列内存密集型操作。从谷歌那里,我知道这一点

调试器和垃圾收集器目前是松散集成的。VM保证在调试器断开连接之前,不会对调试器知道的任何对象进行垃圾收集。当调试器连接时,这可能会导致对象随时间累积。例如,如果调试器看到一个正在运行的线程,即使在线程终止后,关联的线程对象也不会被垃圾收集

不幸的是,这意味着,虽然我的应用程序在发布模式下运行良好,但在调试模式下运行的任何内存密集型线程都将被垃圾收集器忽略并保留,因此随着越来越多的内存密集型线程的创建,会使用越来越多的内存,导致应用程序崩溃,因为它无法分配所需的内存


有没有办法明确告诉垃圾收集器应该收集这些线程,或者用其他方法来解决这个问题?

我最终通过生成一个
异步任务而不是
线程解决了这个问题。垃圾收集器似乎更容易清除异步任务,因此我能够在调试模式下运行应用程序而不会出现问题

异步任务是生成后台操作的推荐方法。任何要在后台完成的工作都应该放在任务的
doInBackground(Params…
方法中。AsyncTasks通常用于在完成后在UI线程上执行操作,但只需将
onPostExecute(Result)
方法保留为空或不存在,即可避免干扰UI线程