最新的2017年热门编程语言排行榜已经出炉,java排名第一,纵观目前的市场,无论是IT金融软件服务行业或者云业务或大数据行业,java语言是开发的业务程序运用最广泛的语言之一。
本文主要通过分析云系统遭遇的java进程内存溢出的问题,介绍java进程占用系统内存高时的排查方案及建议的解决方案,同时延伸拓展java进程占用系统内存高的原因以及对于linux操作系统的内存管理和优化方案。
【云环境系统java进程内存占用高】
系统的运维值班人员发现该系统的uc注册页面访问超时,根据监控反馈的报错地址,登录相应的UC注册网页时,发现提示如下:网站维护中。

检查该uc注册业务对应的进程后,发现进程运行正常,检查服务的日志情况,然而并发现没有异常。

最后怀疑可能是该服务器的内存溢出,可能是产品对连接到服务端的线程没做控制,导致已结束、假死或超时的线程未释放内存,或者上述线程释放内存之后,没有进行内存整理,产生碎片,然后越积越大,然后就爆炸了。
但是查看服务器的内存情况如下:

通过以上查询发现,服务器内存总共4G,可用的还有300M左右,笔者查询相关资料后使用jmap -dump:format=b,file=ucweb.bin ${pid}的方法dump相应Java进程运行过程中占用的内存情况,然后导出为二

本文探讨了Java在云环境中遇到的内存溢出问题,分析了Java进程内存占用高的排查方法,包括使用jmap、jstat等工具进行诊断。通过对Java进程启动参数的调整,如-Xmx、-Xms、-XX:MaxPermSize,以及实时性能监控,提供了内存管理和优化策略,以提升程序的稳定性和效率。

501

被折叠的 条评论
为什么被折叠?



