全程干货(堆内存释放)堆内存溢出的一般原因,堆内存大小设置及清理,java堆内存设置,
企业级的EDI服务器一般大家都会选择使用Linux服务器来进行安装部署知行之桥,项目在运行过程中有时会提示服务器内存不足,往往得到的反馈都是“我们的服务器内存很大,为什么还是一直提示内存不足呢?”,其实是因为分配给知行之桥使用的java堆内存不足导致的,这就需要分配充足的java堆内存。本文将介绍如何来进行修改java堆内存,及如何进行清理。
修改堆内存
1. 首先我们需要确认知行之桥进程的pid及jdk版本
pid命令:ps -ef | grep java

如上图,查到知行之桥进程pid为6956
jdk版本命令:

2. 确认目前知行之桥占用的堆内存
命令:java 11及以上版本使用:jhsdb jmap --heap --pid 6956
低版本使用:jmap -heap 6956

如上图,MaxHeapSize表示分配的最大堆内存,为244M
3. 在知行之桥服务文件中设置堆内存大小
①进入知行之桥服务文件目录,找到arc.service文件
命令:cd /etc/systemd/system

②修改arcesb.service文件中的内存设置参数
命令:vi arc.service

修改后,:wq保存退出文件编辑。
③执行重新加载知行之桥服务注册文件:
命令:systemctl daemon-reload
④设置开机知行之桥服务自启动:
命令:systemctl enable arc

⑤重启知行之桥服务
命令:service arc restart

⑥确认堆内存是否修改成功:
重启知行之桥后,pid会改变,先查下新的pid

查看堆内存:jhsdb jmap --heap --pid 10061,如下图已更改为500M

⑦确认知行之桥服务是运行状态

堆内存清理
如果堆内存使用过高,如何进行清理呢?
我们可以通过对java堆内存和系统内存清理两种方式进行清理,但是考虑稳定性,建议优先使用java堆内存清理,系统内存清理建议服务器空闲时间再使用。
Java堆内存清理
1. 查看知行之桥进程的pid
命令:ps -ef | grep java

2. 确认目前知行之桥占用的堆内存
命令:java 11及以上版本使用:jhsdb jmap --heap --pid 10061
低版本使用:jmap -heap 10061

3. 清理java堆内存
命令:jcmd 10061 GC.run

4. 延迟几秒,查看清理后堆内存占用情况
命令:jhsdb jmap --heap --pid 10061 (jmap -heap 10061)

如上图java堆内存清理成功,从70.10%降到了38.55%。
系统内存清理
1. 查看系统内存使用情况
命令:free -h

2. 清理系统内存
命令:sync && echo 3 > /proc/sys/vm/drop_caches

3. 延迟几秒,查看清理后系统内存情况

如上图,可用系统内存从94M增加到了346M,清理成功。
一些其他常用的关于 EDI服务器操作的命令
1. 查看服务器所有挂载点及占用比例
命令:df -h

2. 查看知行之桥占用对应挂载点比例
命令:df /知行之桥安装目录

以上结果表示:知行之桥挂在名为/dev/mapper/centos-root的挂载点上,占用24%的空间
3. 查看CPU使用情况
①命令:top #

如上图,在查询结果的第三行有显示CPU的使用情况,其中:
②命令:vmstat

③命令:sar
sar命令不存在时,需要先安装sysstat包,安装命令:yum install sysstat

sar #查看CPU

sar -d查看系统磁盘的读写性能
4. 查看inode(存储文件属性信息的区域)
①命令:df -i 查看每个硬盘分区的inode总数和已经使用的数量
②命令:stat 文件夹/文件名 查看某个文件夹/文件的inode信息
本文系作者 @河马 原创发布在河马博客站点。未经许可,禁止转载。
暂无评论数据