我有一个java进程A, 我使用60线程并发来进行压力测试, 15个小时后,它使用了93%的内存。但是stil正在运行,只是请求非常慢。
我收到了转储文件。但堆或堆栈没有什么异常。 什么时候没有请求。记忆力还没有下降。在两次完整的gc期间。记忆释放到68%,现在是49%。
我为什么徘徊?以及如何检查哪些东西占用了大量内存。 这个过程只做三件事:
答案 0 :(得分:0)
您可以使用jmap生成一个headpump来查看堆内容。根据所使用的GC算法,java进程可能会在触发GC循环之前填充其所有可用内存。看看-XX:CMSInitiatingOccupancyFraction参数