首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java内存在任务管理器中增加,但在探查器中没有增加

Java内存在任务管理器中增加,但在探查器中没有增加
EN

Stack Overflow用户
提问于 2014-10-08 22:12:32
回答 1查看 857关注 0票数 1

我们开发了一个CPU高度密集型的Java服务器应用程序,它有一个严重的内存泄漏(至少看起来是这样)。随着时间的推移,应用程序似乎会消耗越来越多的内存(如Windows任务管理器所见),但如果我使用专门的Java分析器对其进行分析,内存似乎会保持不变。例如,在任务管理器中,我看到应用程序占用了超过8 2gb的内存并且还在不断增长,但在Java分析器中,我看到堆内存最多为2 2gb。我尝试了所有可能的JAVA_OPTS组合(-Xmx,-Xms,所有类型的GC),但都不起作用,是不是Java进程没有将内存释放回操作系统?有没有办法迫使它这么做呢?

EN

回答 1

Stack Overflow用户

发布于 2014-10-08 23:01:09

1)

我建议您设置-Xmx2100m并观察负载下的堆使用情况。

JVM可能会占用尽可能多的OS内存,直到它达到Xmx限制。在现代JVM中,默认的Xmx是根据操作系统中可用的总内存来计算的,因此它可能是一个很大的值。

我认为你的应用程序没有内存泄漏,你的JVM只是分配了大量内存,因为它可以。

通过jvisualvm观察您的JVM。

2)

第二个建议--你使用JNI代码吗?您的应用程序是否调用任何本机库(即。windows下的dll )?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26259099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档