CentOS 6.8环境下Java堆内存查看命令及堆内存分配调整咨询
问题解答
1. 查看已分配堆内存的命令
分两种场景使用对应命令:
- 查看JDK默认的全局堆配置
你已经使用的命令是正确的:
输出结果中java -XX:+PrintFlagsFinal -version | grep HeapSizeInitialHeapSize对应JDK默认初始堆大小(即-Xms参数默认值),MaxHeapSize对应JDK默认最大堆大小(即-Xmx参数默认值),单位为字节。 - 查看正在运行的Java进程(如Tomcat进程)的实际分配堆内存
- 先查询Java进程ID:执行
jps命令,找到对应Java程序的进程号(pid) - 执行以下任意命令查看堆配置:
jmap -heap <pid>:直接输出完整的堆内存分配、使用详情jcmd <pid> VM.flags:查看进程启动时传入的堆参数配置jstat -gc <pid>:查看堆内存各分区的实时使用情况
- 先查询Java进程ID:执行
2. 调整Java程序内存大小
同样分两种场景配置:
2.1 普通独立Java程序
启动程序时直接在java命令后传入JVM堆参数即可,仅对当前启动的程序生效,示例:
# 给jar包程序设置初始堆2G,最大堆8G java -Xms2g -Xmx8g -jar 你的应用包名.jar
你之前执行的java -Xmx8000m -XshowSettings:all仅对当前这条测试命令生效,不会全局修改JDK配置,也不会影响其他Java程序。
2.2 Apache Tomcat 8.5 内存配置(适配你的运行环境)
你如果是要调整Tomcat的Java堆内存,按以下步骤操作:
- 进入Tomcat安装目录的
bin文件夹,找到catalina.sh文件 - 编辑
catalina.sh,在文件开头(非注释区域)添加以下配置:
CATALINA_OPTS="-Xms2048m -Xmx8000m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
其中-Xms为初始堆大小,-Xmx为最大堆大小,可根据你的实际需求调整数值,注意最大堆不要超过系统剩余可用物理内存,32位CentOS 6.8系统最大堆不能超过2G。
3. 保存退出后重启Tomcat生效:先执行./shutdown.sh关闭Tomcat,待进程完全停止后执行./startup.sh启动
4. 重启完成后可通过前面的jmap命令验证配置是否生效
内容的提问来源于stack exchange,提问作者Muhammad bux
相关产品推荐
相关产品推荐

