性能问答>程序使用一段时间就把服务器的内存占完了如何发现内存泄漏的代码>
6回复
2年前

程序使用一段时间就把服务器的内存占完了如何发现内存泄漏的代码



各位大神,我们有一个采集程序发现使用一段时间后把服务器的内存打满了。堆内内存设置的并不是太大,方便给一下排查问题的思路么?
java -Xms2G -Xmx2G -XX:NewRatio=2 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=5M -Dserver.port=8083 -Dspring.profiles.active=online -jar monitor-1.1.jar

6039 阅读
请先登录,再评论

直接用perfma的内存分析试了吗?

2年前
回复 微笑_267614:

还没有,我试试先

2年前回复

机器物理内存多大呢,这服务器还跑其他程序了没

2年前
回复 wntp:

具体的异常栈提示是什么呢,属于哪种情况下的oom

2年前回复
回复 LetUsJava:

机器内存挺大的,空余也很多

2年前回复

生成了hs_err_pid789.log
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 12288 bytes for committing reserved memory.
# Possible reasons:
# The system is out of physical RAM or swap space
# In 32 bit mode, the process size limit was hit
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Use 64 bit Java on a 64 bit OS
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_linux.cpp:2627), pid=789, tid=139687472645888
#
# JRE version: OpenJDK Runtime Environment (8.0_66-b60) (build 1.8.0_66-b60)
# Java VM: OpenJDK 64-Bit Server VM (25.66-b60 mixed mode linux-amd64 compressed oops)
# Core dump written. Default location: /ssss/sss/core.789
#

2年前