我的项目已经开始使用java 7中的java 8.
切换到java 8后,我们发现消耗的内存随着时间的推移而越来越高.
以下是我们所做的调查:
>只有从java7和java8迁移后才会出现问题
>因为元空间是唯一与内存有关的东西,它是从hava 7变为java 8.我们监视了metaspace,这不会超过20 MB.
>堆也保持一致.
现在剩下的唯一途径就是分析内存如何在java 7和java 8中进行分配,特别是私有字节内存.任何想法或链接在这里将不胜感激.
注意:此javaw应用程序是基于swing的应用程序.
更新1:使用NMT工具分析本机内存并生成与基线相比占用的内存差异.我们发现堆保持相同但线程正在泄漏所有这些内存.因此Heap没有变化,我假设这个泄漏是因为本机代码.
所以挑战仍然存在.关于如何分析所有线程占用的内存的任何想法在这里都会有所帮助.
以下是从本机内存跟踪中获取的快照.
在这张图片中,你可以看到88 MB的线程增加了.竞技场和资源处理数量增加了很多.
在这张图片中你可以看到这个Malloc中增加了73 MB.但是这里没有显示方法名称.
所以请在理解这两个截图时提供一些信息.