我在调试一个在位图上运行一系列内存密集型操作的 Android 应用程序时遇到了一些问题。从谷歌的调试提示中,我知道
调试器和垃圾收集器目前松散地集成在一起。VM 保证调试器知道的任何对象在调试器断开连接之前不会被垃圾收集。当调试器连接时,这可能会导致对象随着时间的推移而堆积。例如,如果调试器看到一个正在运行的线程,则即使在线程终止后,关联的 Thread 对象也不会被垃圾回收。
不幸的是,这意味着当我的应用程序在发布模式下运行良好时,任何在调试模式下运行的内存密集型线程都将被垃圾收集器忽略并被保留,因此随着越来越多的内存密集型线程被使用,越来越多的内存被使用创建,导致应用程序崩溃,因为它无法分配所需的内存。
有没有办法明确地告诉垃圾收集器应该收集这些线程,或者以其他方式解决这个问题?