JVM诊断之查看运行参数

20 篇文章 0 订阅
1 篇文章 0 订阅

问题描述

为了分析和定位一个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面试】即可免费获取,数量有限先到先得。
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用JMX(Java Management Extensions)来查看JVM运行中各个指标的情况。JMX提供了一种标准的方式来监控和管理Java应用程序,您可以使用JConsole或VisualVM等工具来连接到JVM查看各种指标,例如内存使用情况、线程数、GC情况等。您还可以使用JMX API编写自己的监控程序来获取更详细的信息。 ### 回答2: 要查看JVM运行中各个指标的情况,可以通过以下方法进行: 1. 使用命令行工具:JVM提供了一些命令行工具来查看各个指标的情况。比如,通过使用jps命令可以查看当前运行Java进程的ID。然后,使用jstat命令可以查看内存、垃圾收集、类加载、线程等信息的统计数据。另外,还可以使用jstack命令来查看Java线程的堆栈信息,以及使用jmap命令来获取堆内存快照。 2. 使用JConsole工具:JConsole是一个JVM监视和管理工具,可以用来查看JVM运行时的各种指标。它可以显示堆内存、线程、类加载、垃圾收集等信息的统计数据,并提供可视化的界面进行监控和分析。 3. 使用VisualVM工具:VisualVM是一个功能丰富的JVM监视和性能分析工具,可以用来查看各个指标的详细信息。它提供了多种视图,可以实时监控内存、垃圾收集、线程、CPU使用率等运行时数据,并进行性能分析和诊断。 4. 使用第三方监控工具:除了上述的官方工具,还有一些第三方的监控工具可供选择。比如,可以使用AppDynamics、New Relic、Dynatrace等工具来监控JVM运行中的各个指标,并提供更多的分析和报警功能。 总之,通过命令行工具、JConsole、VisualVM以及第三方监控工具,可以方便地查看JVM运行中各个指标的情况,并进行性能分析和调优。 ### 回答3: 要查看JVM运行中各个指标的情况,可以使用以下几种方法: 1. 使用命令行工具:JVM提供了一些命令行工具来查看JVM运行时的指标。其中最常用的是jstat和jinfo命令。jstat命令可以实时监控JVM的各种指标,如堆内存使用情况、GC统计等;jinfo命令可以显示和修改JVM的配置参数。 2. 使用可视化工具:除了命令行工具,还可以使用一些可视化工具来查看JVM指标。比如VisualVM是一个常用的Java性能分析工具,可以实时监控JVM的各种指标,并提供图表展示,以便更直观地观察JVM运行情况。 3. 使用监控系统:除了单独的工具,还可以使用一些监控系统来监控JVM的各项指标。比如,使用Elasticsearch和Kibana可以搭建一个ELK监控系统,可通过收集和分析JVM生成的日志文件来监控JVM运行情况,并展示为图表形式。另外,Prometheus和Grafana也是常用的监控系统组合,可以方便地监控和可视化JVM的各项指标。 无论使用哪种方法,都可以通过查看和分析JVM的各项指标来了解JVM运行情况,如CPU利用率、堆内存使用率、线程数等,以及GC的频率和耗时情况等。这些指标可以帮助开发人员和运维人员更好地优化和调整JVM的配置,以提升程序的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值