我有一个应用程序SWING + JNI。它正在泄漏私有集内存但在JAVA堆中没有泄漏。
如果我将其置于压力测试之下,私有集会增长到1G +(由任务管理器和WIM_MAP工具报告)并且应用程序崩溃并出现“内存不足”错误。同时java堆不到300 MB,根本没有泄漏。
我尝试用C ++代码做同样的事情并且没有泄漏。
JNI和Java之间的数据是使用DirectBuffer传输的,但我们重用相同的内存空间,因此不应该泄漏。 我尝试用C ++和JNI包装器运行它,没有SWING,也没有泄漏。
此时我陷入困境。本机数据存在明显的内存泄漏,但它仅显示SWING + JNI。
我用Wim-Map工具证明了这一点。
任何继续调查的建议或技巧?