加载中...
avatar
文章
42
标签
25
分类
21
首页
Java
Spring全家桶
  • Spring
  • SpringBoot
  • SpringCloud
JVM
源码
  • Mybatis
  • HashMap
归档
其他
  • 互联网电子书汇总
  • JAVA八股文指南
  • 历史
  • 相册
关于
Logo码农Stormling面试系列(七)| JVM常见命令
搜索
首页
Java
Spring全家桶
  • Spring
  • SpringBoot
  • SpringCloud
JVM
源码
  • Mybatis
  • HashMap
归档
其他
  • 互联网电子书汇总
  • JAVA八股文指南
  • 历史
  • 相册
关于

面试系列(七)| JVM常见命令

发表于2021-10-19|更新于2025-01-07|面试
|总字数:634|阅读时长:2分钟|浏览量:

JVM 常用命令介绍

下面介绍一下

JVM 中常用的调优、故障处理等工具。

  1. jps :虚拟机进程工具,全称是 **JVM Process Status Tool**,它的功能和 Linux 中的 ps 类似,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类 Main Class 所在的本地虚拟机唯一ID,虽然功能比较单一,但是这个命令绝对是使用最高频的一个命令。
  2. _jstat_:虚拟机统计信息工具,用于监视虚拟机各种运行状态的信息的命令行工具,它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据。
  3. jinfo:Java 配置信息工具,全称是 _Configuration Info for Java_,它的作用是可以实时调整虚拟机各项参数。
  4. _jmap_:Java 内存映像工具,全称是 _Memory Map For Java_,它用于生成转储快照,用来排查内存占用情况
  5. jhat:虚拟机堆转储快照分析工具,全称是 _JVM Heap Analysis Tool_,这个指令通常和 jmap 一起搭配使用,jhat 内置了一个 HTTP/Web 服务器,生成转储快照后可以在浏览器中查看。不过,一般还是 jmap 命令使用的频率比较高。
  6. _jstack_:Java 堆栈跟踪工具,全称是 Stack Trace for Java ,顾名思义,这个命令用来追踪堆栈的使用情况,用于虚拟机当前时刻的线程快照,线程快照就是当前虚拟机内每一条正在执行的方法堆栈的集合。

常见的 JVM 调优参数有哪些?

命令参数 作用
-Xms256m 初始化堆大小为 256m
-Xmx2g 最大内存为 2g
-Xmn50m 新生代的大小 50m
-XX:+PrintGCDetails 打印 gc 详细信息
-XX:+HeapDumpOnOutOfMemoryError 在发生OutOfMemoryError 错误时,来 dump 出堆快照
-XX:NewRatio=4 设置年轻的和老年代的内存比例为 1:4
-XX:SurvivorRatio=8 设置新生代Eden 和 Survivor 比例为 8:2
-XX:+UseSerialGC 新生代和老年代都用串行收集器Serial + Serial Old
-XX:+UseParNewGC 指定使用ParNew + Serial Old 垃圾回收器组合
-XX:+UseParallelGC 新生代使用Parallel Scavenge,老年代使用 Serial Old
-XX:+UseParallelOldGC 新生代ParallelScavenge + 老年代 ParallelOld 组合
-XX:+UseConcMarkSweepGC 新生代使用ParNew,老年代使用 CMS
-XX:NewSize 新生代最小值
-XX:MaxNewSize 新生代最大值
-XX:MetaspaceSize 元空间初始化大小
-XX:MaxMetaspaceSize 元空间最大值
文章作者: stormling
文章链接: http://www.stormling.top/posts/45688.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 码农Stormling!
JVM
cover of previous post
上一篇
面试系列(八)| 消息队列
消息队列 消息队列解决的核心场景:解构、异步、削峰 1.为什么使用MQ​ 公司业务场景,核心:解耦、异步、削峰 解耦:​ A系统发数据给到BCD系统,如果E系统需要接入?C系统不需要了?A系统的负责人就需要来回修改接口对接其他系统。 ​ 如果使用MQ,A系统产生一条数据,发送到MQ中,那个系统需要数据自己去MQ消费。如果新的系统需要数据,直接从MQ中消费;某个系统不需要数据的话,取消消费这个MQ即可。这样A系统不需要考虑谁发送数据给谁,不需要考虑是否调用成功、失败超时等问题。 总结:通过一个MQ,Pub/Sub发布订阅消息模型,A系统就和其他系统彻底耦合了。 项目应用:​ ...
cover of next post
下一篇
面试系列(六)| 双亲委派模型
什么是双亲委派模型?JVM 类加载默认使用的是双亲委派模型,那么什么是双亲委派模型呢? 这里我们需要先介绍一下三种类加载器: 启动类加载器:**Bootstrap Class Loader,这个类加载器是 C++ 实现的,它是 JVM 的一部分,这个类加载器负责加载存放在 \lib 目录,启动类加载器无法被 Java 程序直接引用。这也就是说,JDK** 中的常用类的加载都是由启动类加载器来完成的。 扩展类加载器:_Extension Class Loader,这个类加载器是 Java 实现的,它负责加载 **\lib\ext_** 目录。 应用程序类加载器,_Application Class Loader_,这个类加载器是由 sum.misc.Launcher$AppClassLoader 来实现,它负责加载 ClassPath 上所有的类库,如果应用程序中没有定义自己的类加载器,默认使用就是这个类加载器。 所以,我们的 Java 应用程序都是由这三种类加载器来相互配合完成的,当然,用户也可以自己定义类加载器,即 _User Class...
相关推荐
cover
2021-10-13
面试系列(五)| JVM垃圾回收算法
JVM 分代收集理论有哪些? 强分代:新生代和老年代 弱分代:新生代和老年代 跨代引用:记忆集【有跨代(dirty)、无跨带(clean)】 分代收集 强分代假说:强分代假说指的是 JVM 认为绝大多数对象的生存周期都是朝生夕灭的; 弱分代假说:弱分代假说指的是只要熬过越多次垃圾收集过程的对象就越难以回收(看来对象也会长心眼)。 就是基于这两个假说理论, JVM 将堆区划分为不同的区域,再将需要回收的对象根据其熬过垃圾回收的次数分配到不同的区域中存储。 JVM 根据这两条分代收集理论把堆区划分 新生代 (Young Generation) :每次垃圾收集时都发现有大批对象死去 老年代 (Old Generation):剩下没有死去的对象会直接晋升到老年代中 跨代引用 上面这两个假说 没有考虑对象的引用关系,而事实情况是,对象之间会存在引用关系,基于此又诞生了 跨代引用假说 (Intergeneration Reference...

评论
ValineGitalk
avatar
stormling
文章
42
标签
25
分类
21
Follow Me
公告
欢迎大家来到Stormling博客
目录
  1. 1. JVM 常用命令介绍
  2. 2. 常见的 JVM 调优参数有哪些?
最新文章
面向八股文面试专场
面向八股文面试专场2025-01-22
【每日早报】-2025-01-21 - 星期二
【每日早报】-2025-01-21 - 星期二2025-01-21
规则引擎 Drools 8+ 快速入门
规则引擎 Drools 8+ 快速入门2024-12-11
数据库系列(二) | Mybatis Plus 3.0+快速入门
数据库系列(二) | Mybatis Plus 3.0+快速入门2024-12-09
分布式系列(二) | Redisson分布式锁
分布式系列(二) | Redisson分布式锁2024-12-05
©2019 - 2025 By stormling
码农Stormling程序员,关注公众号【码农Stormling】回复【面试】获取最全面试pdf
搜索
数据加载中