目录
通过jps查看java进程
1、开启垃圾回收日志
2、jvm命令
2.1、jmap -heap (pid)18096 监控的jvm的
2.2、堆内存查看,linux系统:java -XX:+PrintFlagsFinal -version | grep HeapSize
2.3、堆内存查看,windows系统:java -XX:+PrintFlagsFinal -version | findstr HeapSize
2.4、查看某进程的JVM情况
2.5、jvm 垃圾收集器查看命令
3、jvm堆内存溢出时,生成堆内存日志
3.1、dump可以是内存溢出时让其自动生成,或者手工直接导出
3.2、开启内存溢出
参考地址:JVM参数设置_徒步凉城-Jasper的博客-CSDN博客_jvm 参数
jvm 堆内存 栈内存 大小设置 查看堆大小_alinshen的博客-CSDN博客_jvm 查看栈大小
启动java应用时,可以加以下参数来开启jvm垃圾回收日志。
-XX:+PrintGC:打印最基本的回收信息
-XX:+PrintGCDetails:可以打印详细GC信息至控制台
-XX:+PrintGCDateStamps 可以记录GC发生的详细时间
jstat -gc 51972(PID) 5000(每隔n毫秒打印一次)
其中51972是进程号,5000为刷新时间。
对应数据项的含义:
java -XX:+PrintCommandLineFlags -version
列出当前机器上正在运行的虚拟机进程
-p :仅仅显示VM 标示,不显示jar,class, main参数等信息.
-m:输出主函数传入的参数. 下的hello 就是在执行程序时从命令行输入的参数
-l: 输出应用程序主类完整package名称或jar完整名称.
-v: 列出jvm参数, -Xms20m -Xmx50m是启动程序指定的jvm参数
java -XX:+PrintCommandLineFlags -version
windows: java -XX:+PrintFlagsFinal -version |FINDSTR /i ":"
Linux: java -XX:+PrintFlagsFinal -version | grep :
参考:jstat命令查看jvm的GC情况 (以Linux为例)_ITPUB博客
是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。
假设需要每250毫秒查询一次进程2764垃圾收集状况,一共查询20次,那命令应当是:
jstat-gc 2764 250 20
常用参数:
-class (类加载器)
-compiler (JIT)
-gc (GC堆状态)
-gccapacity (各区大小)
-gccause (最近一次GC统计和原因)
-gcnew (新区统计)
-gcnewcapacity (新区大小)
-gcold (老区统计)
-gcoldcapacity (老区大小)
-gcpermcapacity (永久区大小)
-gcutil (GC统计汇总)
-printcompilation (HotSpot编译统计)
配置jvm参数:-XX:+HeapDumpOnOutOfMemoryError - XX:HeapDumpPath=/home/biapp/m.hprof
手工直接导,PID为进程号
jmap -dump:live,format=b,file=d:\a\app.hprof PID
XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/biapp/m.hprof