在我最近的项目中,我面临一个奇怪的内存泄漏问题。我有一个“主”代码,它向“处理程序”代码发送消息。通信时,处理程序代码执行固定任务,将结果写入磁盘,然后退出。固定任务是通过调用另一个类中的特定函数来执行的。
在执行此函数期间,堆大小会增加(预期)。但是,在代码完成后,结果本身不应占用太多空间。人们会期望对处理程序的调用完成会导致较小的内存占用。但是,“顶部”表明处理程序仍然消耗大量内存 (RES)。
线程退出不应该确保线程消耗的堆被回收吗?我尝试在函数执行后进行 System.gc() 调用,但是,它不会强制进行垃圾收集。