我有一个Java进程作为服务在Windows 7 [8 GB RAM]上运行4-5天,在JVM上没有太多活动。我注意到内存(私人工作集)[任务管理器]日益增加。它以45000K开始,现已达到115000K。
如果我捕获Java进程的堆转储,则堆转储大小仅为950KB。什么导致更多的内存消耗?或者我该如何找到根本原因?
答案 0 :(得分:0)
这很可能是内存泄漏。 基本上一些应该被GC删除的对象仍然有链接。
您应该使用visualvm java工具来调查此问题。 http://rejeev.blogspot.com/2009/04/analyzing-memory-leak-in-java.html
答案 1 :(得分:0)
8 GB(8,000,000K)计算机的默认最大堆大小为2 GB。如果Java进程决定这会将吞吐量提高到这个限制,那么它将使用更多的内存。
注意:进程的大小包括~150 MB的共享库,所以如果你包括它应该不会让人惊讶它使用115 MB。
真正的问题是;你真的知道这是一个问题吗,听起来不像是很多记忆。