JVM诊断之查看运行参数 jvm运行参数说明

createh52周前 (12-17)技术教程11

问题描述

为了分析和定位一个Java线上系统问题,我们需要查看JVM启动时的一些参数设置,例如:垃圾回收算法、堆大小等等。这些参数可能在启动脚本中明确指明,也可能采用默认值。在系统运行过程中其他人也许动态调整了系统参数。 如何实时查看正在运行的JVM的参数呢?

解决方案

可以采用jcmd来查看正在运行的JVM的参数。jcmd从JDK 7开始引入的一个JVM诊断命令行工具,可以向运行中的JVM发送诊断命令。

查看JVM进程的PID

$ jcmd -l

27940 sun.tools.jcmd.JCmd -l

24684 org.codehaus.plexus.classworlds.launcher.Launcher -Prun

23839 com.intellij.idea.Main

23951 org.jetbrains.idea.maven.server.RemoteMavenServer

查看进程24684的参数

$ jcmd 24684 VM.flags

24684:

-XX:InitialHeapSize=98566144 -XX:MaxHeapSize=1547698176 \

-XX:MaxNewSize=515899392 -XX:MinHeapDeltaBytes=524288 \

-XX:NewSize=1572864 -XX:OldSize=96993280 \

-XX:+UseCompressedClassPointers \

-XX:+UseCompressedOops -XX:+UseParallelGC

堆大小设置,垃圾回收算法等一目了然。


不论是在问题现场还是跳槽面试,面对这些问题,如何快速定位和解决问题,需要你对 Java 虚拟机的实现和优化,有极为深刻的理解。但遗憾的是,很多时候我们都在为了“面试可以造核弹”才去学习 JVM。或者看一些理论书籍和博客,这种针对面试和理论的学习,仍旧无法帮你解决实战场景下的问题。

下面小编给大家,分享小编自己正在阅读的一篇java面试jvm问题集合。

1. 内存模型以及分区,需要详细到每个区放什么。

2. 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。

3. 对象创建方法,对象的内存分配,对象的访问定位。

4. GC 的两种判定方法:

5. SafePoint 是什么

由于答案图片太多,会使本文字符过长,小编已经为大家准备好了jvm面试问题和答案文档(含PDF版),私信小编【jvm面试】即可免费获取,数量有限先到先得。

6. GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?

7. GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。

8. Minor GC 与 Full GC 分别在什么时候发生?

9. 几种常用的内存调试工具:jmap、jstack、jconsole、jhat

10. 类加载的几个过程:

11.JVM 内存分哪几个区,每个区的作用是什么?

12.如和判断一个对象是否存活?(或者 GC 对象的判定方法)

13.简述 java 垃圾回收机制?

14.java 中垃圾收集的方法有哪些?

15.java 内存模型

16.java 类加载过程?

17. 简述 java 类加载机制?

18. 类加载器双亲委派模型机制?

19.什么是类加载器,类加载器有哪些?

20.简述 java 内存分配与回收策率以及 Minor GC 和 Major GC

由于答案图片太多,会使本文字符过长,小编已经为大家准备好了jvm面试问题和答案文档(含PDF版),私信小编【jvm面试】即可免费获取,数量有限先到先得。

相关文章

java命令行参数 java命令行参数表示形式

命令行参数就是main方法里面的参数String[] args他就是一个数组,args只是数据类型的一个名称,就是一个数组的变量,名称无所谓,类型没变就行了。这个就是程序的入口点。如图7.4所示:图7...

Java启动参数设置 java启动参数设置java.exe名字

set JAVA_OPTS=-Xms4g -Xmx4g -Xmn3g -XX:SurvivorRatio=6 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=2...

Java方法参数传递的机制 java方法参数可以传空吗

目前两种比较流行的方法参数传递模式主要是值传递和引用传递。不同的编程语言对于这两种机制可能有不同的处理方式。对Java来说,一切都是严格按值传递的。接下来,我们来一起探讨下 Java 如何为各种类型传...

java面试题|JVM调优常用JVM参数代码实例简介

JVM(Java Virtual Machine)启动参数用于配置Java应用程序的运行时环境,包括内存管理、垃圾回收(GC)算法、性能调优和日志记录等。# JVM启动参数,不换行格式 # 设置堆内...

Java面试常见问题:JVM内存异常及内存参数设置

前文《Java面试必考问题:JVM内存区域如何划分? 》介绍了Java虚拟机的内存区域划分。内存异常问题是程序开发过程中经常遇到的问题,也是面试中常问到的,本文重点介绍一下JVM的内存异常以及相关的内...