我有一个Java进程作为一个服务在Windows 7、8 GB RAM上运行4-5天,在JVM上没有太多的活动。我注意到内存(私有工作集)任务管理器与日俱增。它从45000 K开始,现在已经达到115000 K。
如果捕获Java进程的堆转储,堆转储的大小仅为950 If。是什么导致了更多的内存消耗?或者我该如何去找出根源呢?
发布于 2014-05-26 16:45:17
8GB(8000,000 K)机器的默认最大堆大小是2GB。Java进程将使用更多的内存,如果它决定这将提高吞吐量,达到这个限制。
注意:该进程的大小包括大约150 MB的共享库,因此如果您包括它,它使用的是115 MB,这并不奇怪。
真正的问题是,你真的知道这是个问题吗,听起来不像是太多的记忆。
发布于 2014-05-26 16:29:09
这很有可能是内存泄漏。基本上,一些应该被GC删除的对象仍然有它们的链接。
您应该使用visualvm工具对此进行调查。http://rejeev.blogspot.com/2009/04/analyzing-memory-leak-in-java.html
https://stackoverflow.com/questions/23874274
复制相似问题