我有一个应用程序,需要比较两个可能非常大(100k+)的目录内容,这会使用大量内存,但我认为这是有道理的。但是,一旦我的比较操作完成后,堆大小仍然保持不变。
基本上,我的代码实例化了一个类,用于保存源和目标文件的文件名、文件大小、路径和修改日期。我把新增、删除和更新保存在其他数组中。然后,我使用clear()
清除源和目标数组(现在可能每个数组都有100k+),只剩下相对较小的新增、删除和更新数组。
然而,在我清除目标和源数组之后,内存使用量(通过VirtualVM和Windows任务管理器可见)并没有下降。我没有足够的经验来使用VirtualVM(或任何分析工具)来确定占用所有这些内存的原因。VirtualVM的堆转储列出了几个保留大小为几兆字节的顶级对象。
请问有什么方法可以帮助指导我正确地解决问题吗?