jvm内存查看命令

jvm内存查看命令

在window上部署tomcat时遇到设置内存参数无法生效的问题

配置步骤如下:
注册表项HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Apache Software Foundation/Procrun 2.0/Tomcat6/Parameters/Java/Options添加如下参数

-Xmx4096m(or -XX:MaxHeapSize=2048m)
-Xms4096m(or -XX:InitialHeapSize=2048m)
-XX:PermSize=64M
-XX:MaxPermSize=1024m
-XX:+PrintCommandLineFlags

参数含义:

新生代大小配置,对应的报错信息

java.lang.OutOfMemoryError: Java heap space

-Xmx4096m(or -XX:MaxHeapSize=2048m)
-Xms4096m(or -XX:InitialHeapSize=2048m)

永久代配置,对应的报错信息

java.lang.OutOfMemoryError: PermGen space

-XX:PermSize=64M
-XX:MaxPermSize=1024m

启动时打印内存信息
-XX:+PrintCommandLineFlags

完成配置后已服务的方式启动tomcat,发现-Xms 和-Xmx 参数不起作用,
查看方式如下:

jmap -heap pid

另外有一个方法是

jinfo -flags pid

最终确定可能是受其他程序配置的影响。采用另外一种配置方法,就是在catalina.bat中添加:

set JAVA_OPTS=-XX:PermSize=512m -XX:MaxPermSize=512m -Xms1024m -Xmx2048m -Djava.awt.headless=true -XX:+PrintCommandLineFlags

用startup.bat启动内存配置就生效了,但缺点是不能开机自启


add 20170809
下面是一些jvm排错相关的命令
(docker环境中要切换到相应用户下才能执行,否则报错 pid not fund)
1.查看内存配置及使用情况

jmap -heap pid

jinfo -flags pid

2.查看内存使用的具体情况,包括每个类的大小个数等

jmap -histo pid

导出二进制文件

jmap -dump:format=b,file=heap.bin pid
可以使用工具分析二进制结果(IBM的HeapAnalyzer和eclipse的MemoryAnalyzer)
3.内存实时查看命令
jstat -gc 33 2000 10
jstat -gcutil 33 2000 10

4.dump线程堆栈信息

jstack pid

5.查看主机上的java进程

jps

相关文档:
jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令
http://blog.csdn.net/x1066988452/article/details/51011411
记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
http://www.jianshu.com/p/3667157d63bb
jstat pid not found
http://dikar.iteye.com/blog/781083

### 回答1: 要查看JVM内存使用情况,可以使用以下命令: 1. jps命令查看Java进程的进程ID 2. jstat命令查看JVM内存使用情况,包括堆内存、非堆内存、GC情况等 3. jmap命令:生成JVM内存快照,可以用于分析内存泄漏等问题 4. jconsole命令:图形化界面查看JVM内存使用情况,包括堆内存、非堆内存、GC情况等 以上命令都可以在Linux系统下使用。 ### 回答2: 在Linux系统中查看JVM内存使用非常简单,只需要使用命令行工具即可。 首先,我们需要确认JDK已经安装在系统中。在终端中输入下面命令来检查Java版本: java -version 如果Java命令不存在,则需要安装JDK。在Ubuntu系统中,可以使用下面命令来安装OpenJDK: sudo apt-get install openjdk-8-jdk 安装完成后,我们可以在终端中运行下面命令来启动JVM: java -Xms256m -Xmx1024m -jar myapp.jar 该命令可以启动一个Java应用程序,并设置初始堆内存为256M,最大堆内存为1024M。当程序运行时,我们可以使用下面命令查看JVM内存使用情况: jstat -gc <pid> <interval> <count> 其中,<pid>是JVM进程的进程号,<interval>是采样间隔(以毫秒为单位),<count>是采样次数。 例如,我们可以使用下面命令查看JVM进程的进程号: ps aux | grep java 然后,使用进程号来查看JVM内存使用情况: jstat -gc <pid> 1000 10 该命令将每秒钟采样一次,共采样10次,然后输出JVM的堆内存使用情况和垃圾回收情况。 除了jstat命令外,我们还可以使用其他工具来查看JVM内存使用情况,例如jmap、jcmd、jstatd等。这些工具的用法和参数不同,请根据需要选择合适的工具。 总之,Linux下查看JVM内存使用情况非常方便,只需要用一些简单的命令就可以完成。这对于调试Java程序和优化JVM性能非常有帮助。 ### 回答3: 在Linux系统中,我们可以使用多种方式来查看Java虚拟机(JVM内存的使用情况,下面介绍几种常用的方法: 1.使用jstat命令 jstat是Java Development Kit(JDK)中自带的一个监控JVM的工具,它能监控JVM内存的使用情况,包括整体内存使用、堆内存使用、非堆内存使用、永久代内存使用等。使用jstat命令,可以获取JVM内存的各项指标,并指导性能调优。以下是查看内存和非堆内存使用情况的命令: - 查看内存使用情况:jstat -gcutil [pid] [间隔时间] [查看次数] - 查看非堆内存使用情况:jstat -gc [pid] [间隔时间] [查看次数] 其中,[pid]是进程ID,[间隔时间]是每隔多少毫秒获取一次内存使用情况,[查看次数]是总共查看的次数。 2.使用jps和jmap命令 jps是JDK中的一个命令,用来列出JVM进程ID,也可以查看JVM进程的启动参数。jmap是JDK中的一个堆转储工具,可以生成JVM堆的转储快照,以及查询JVM内存使用情况。以下是查看JVM内存使用情况的命令: - 查看JVM进程ID:jps - 生成JVM堆快照:jmap -dump:file=[堆快照文件名] [pid] - 查询JVM内存使用情况:jmap -heap [pid] 其中,[pid]是进程ID。 3.使用top命令 top是系统资源监视器,可以通过top命令查看系统中所有进程的CPU、内存等资源使用情况。通过top命令可以查看JVM进程的CPU和内存使用情况。以下是查看JVM进程的内存使用情况的命令: - top -p [pid] 其中,[pid]是进程ID。 通过以上这些方式,我们可以了解JVM内存使用情况,方便我们进行性能调优和资源管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值