最初,我认为内存在本机库中泄漏,但似乎不是。我使用JNA访问Winapi的User32库。某些函数碰巧被称为过于频繁,特别是GetWindowText
和GetWindowTextLength
。好吧,我可以看到一些方法来减少对这些函数的调用量,但我更愿意先删除泄漏。
这是泄漏堆栈跟踪:
绿色标记标记我的程序开始的位置。
正如您所看到的那样,java.lang.reflect.Method
个实例正在堆积。运行5-10分钟后,它们就有44MB!这太过分了,特别是对于应该在后台运行的程序,这是我的程序应该做的。
我能为此做些什么吗?这是JNA的错误吗?或者只是垃圾收集器太懒了?