在第一篇中,我们来介绍查看jvm运行状态的一些工具。
jps
jps用来查看当前系统中运行的java程序
jps, 使用默认参数的话,直接显示出java程序的pid(即vmid)和运行的程序名称。
jps, 使用-v参数,显示传入到jvm的参数.
jcmd
jcmd是jdk7中提供的新工具, 可以获得比jps更多的信息.
jcmd, 使用默认参数, 显示pid和类名称(或者jar名称)
jcmd中最重要的是,使用jcmd pid help,可以查看jvm中允许jcmd获取哪些信息. 如
下面例子中,也可以直接使用类名称(或者jar名称)来代替pid来执行. 即下面三行的执行效果是一样的.
jcmd example.jar help
jcmd path/example.jar help
jcmd pid help
例如:1. 显示VM版本
jcmd pid VM.version
例如:2. 显示系统信息
jcmd pid VM.system_properties
例如:3. 显示GC相关参数
jcmd pid VM.flags
例如:4. 显示vm工作时间
jcmd pid VM.uptime
例如:5. 显示类柱形图
jcmd pid GC.class_histogram > histo.txt
这里和jmap -histo pid的效果是一样的.
例如: 6. 显示全部vm性能相关的参数
jcmd pid PerfCounter.print
例如:7. 显示所有线程的java栈信息
jcmd pid Thread.print
这里和jstack -l pid的效果是一样的。
这里和下面的例子就不再附图了. 可以自己尝试.
例如:8. dump出HPROF格式的内存信息, 保存到/tmp/dump.bin文件中. 这里文件名要使用绝对路径. 如果使用相对路径,会保存到pid进程运行时所在的目录中.
jcmd pid GC.heap_dump /tmp/dump.bin
例如:9. 执行一次finalization操作,相当于执行java.lang.System.runFinalization()
jcmd pid GC.run_finalization
例如:10. 执行一次Full gc操作, 相当于执行java.lang.System.gc()
jcmd pid GC.run
参考文献:
1.
Java SE 7: Reviewing JVM Performance Command Line Tools
分享到:
相关推荐
Java虚拟机(JVM)具有一个独特的架构,它包括以下几个关键组件: ##### 寄存器 JVM使用一组寄存器来存储操作数和结果。每个线程都有自己的寄存器集合,这样可以确保多线程之间的隔离性。 ##### 内存区域 JVM...
2. 运行时数据区:JVM将内存分为不同的区域,如方法区(存储类信息)、堆(存放对象实例)、栈(存储方法调用)、程序计数器(记录下一条要执行的指令地址)和本地方法栈(服务本地方法,如JNI调用)。 3. 执行引擎...
总结,Java JVM内存分配和调优是一项复杂的任务,需要结合实际应用的需求和性能指标来调整。通过理解JVM内存模型,选择合适的垃圾收集器和设置合理的内存参数,可以有效提升Java应用的性能和稳定性。在实践中,不断...
Java虚拟机(JVM)是Java程序运行的基础,它负责解释和执行字节码,提供了一个平台无关的运行环境。JVM性能优化是提升Java应用效率的关键环节,涉及到内存管理、垃圾回收、线程调度等多个方面。以下是对"Java JVM及...
Java虚拟机(JVM)作为Java编程语言的核心组件之一,其重要性不言而喻。本文将深入剖析JVM的基本概念、架构及其内存管理机制,重点解读堆和栈内存溢出的情况及案例分析。 #### 二、Java虚拟机(JVM)简介 Java虚拟机...
其中,堆存储对象实例,栈处理方法调用,方法区存储类信息,本地方法栈服务本地方法,程序计数器记录下一条指令的位置。 4. **字节码执行**:JVM通过解释器或即时编译器(JIT)来执行字节码。解释器逐行解释执行,...
总结,了解JVM的这些基础知识是成为一名合格的Java开发者的必经之路。深入学习JVM,不仅可以提升编程技能,还能帮助解决性能问题,使代码运行更加高效。通过实践和不断探索,我们可以更好地理解和利用这个强大的平台...
Java虚拟机(JVM)是Java语言的核心组成部分,它为Java程序提供了一个跨平台的运行环境。以下是对JVM相关知识点的详细解释: 1. **Java代码的执行过程**: - 开发人员编写的Java代码首先通过`javac`编译器转化为`....
堆存储对象实例,栈保存方法调用,方法区存储类信息,程序计数器记录下一条要执行的指令,本地方法栈则为Java Native Interface (JNI) 方法服务。 4. **垃圾收集**:JVM提供自动内存管理,通过垃圾收集器回收不再...
Java虚拟机(JVM)内存模型是Java虚拟机的核心组件之一,它定义了Java程序在运行时的内存布局和管理方式。JVM内存模型主要分为五个部分:程序计数器、虚拟机栈、本地方法栈、堆、方法区。 1. 程序计数器(Program ...
堆内存用于存储对象实例,栈内存处理方法调用,方法区存储类信息,程序计数器记录下一条指令地址,本地方法栈服务于Java的Native方法。 三、JVM参数配置 优化JVM性能的关键在于正确设置JVM参数。这些参数包括初始堆...
堆是存储对象实例的主要区域,栈则用于存储方法调用时的局部变量,方法区保存类信息,程序计数器记录下一条要执行的指令,本地方法栈服务于JNI(Java Native Interface)调用。 2. **垃圾回收**:Java的自动内存...
虽然Java语言本身并不强制要求JVM实现GC,但现代JVM如Oracle的HotSpot JVM等普遍提供了这一功能。 GC的主要目标是识别和清理不再被任何活动对象引用的对象。有两个主要的判断对象是否可回收的方法:引用计数和对象...
Java 11的JVM还增强了对变量处理的支持,如JEP 304(VarHandle)提供了一种安全、高性能的方式来访问和修改变量,无论它们是在堆上还是在栈上。这种新的抽象层可以避免内存模型错误,并且适用于多线程环境。 在JVM...
JAVA虚拟机(JVM)是Java语言的核心组成部分,它为Java程序提供了运行环境,使得Java代码能在任何支持JVM的平台上运行,实现了“一次编写,到处运行”的目标。JVM规范定义了Java程序如何在特定系统上被加载、解析、...
Java虚拟机(JVM)是Java运行环境的一部分,它的主要任务是执行Java字节码。字节码是一种中间语言,由Java编译器将源代码编译成,然后由JVM解析并执行。JVM的存在使得Java程序可以跨平台运行,因为它提供了平台无关...
Java虚拟机(JVM)是Java程序运行的基础,它负责解析字节码并管理程序的内存。本资料总结主要关注JVM内存分配及其运行原理,这对于理解和优化Java应用程序的性能至关重要。 1. **JVM内存结构** JVM内存分为几个...
【狂神说JVM探究】是一份集合了多种格式的学习资料,主要涵盖了Java虚拟机(JVM)的基础知识。这份资料出自B站上的【狂神说Java】系列教程,为快速入门JVM提供了详实的笔记。以下是根据这些资源可能包含的一些关键...
Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。在Java开发和面试中,JVM相关的知识是必不可少的一部分。下面,我们将深入探讨Java JVM的一些核心概念和面试常问问题。 1....
JVM(Java Virtual Machine,Java虚拟机)的主要作用在于为Java程序提供一个跨平台的运行环境。通过生成能在不同平台上运行的字节码(即目标代码),使得Java程序无需重新编译即可在各种操作系统上执行。这一特性极...