当前位置:首页 > 虚拟机 > 正文

虚拟机如何查看jvm(如何看jvm虚拟机启动了几个)

如何查看unix的java内存使用情况
jmap(Linux独有且比较常用的命令)
观察正在运行的例程的物理内存。
参数如下:
-heap:打印jvmheap位置
-this:打印jvmheap堆。输出信息包括类名、对象数量、对象占用大小。
-histo:live:同上,但只允许存活对象
-permstat:打印堆站点的永久代
命令使用:
jmap-heap3409
新增一代可以。Observable(EdenSpace,FromSpace,ToSpace),tenuredGeneration,PermGeneration内存使用情况
输出内容:
jmap-histo3409|jmap-histo:live3409
可以注意到堆(Heap)中所有东西的状态所有幸存者的原因)。它占据了许多东西和空间。
输出内容:
编写一个脚本,可以快速找到占用堆最大的对象,这样在内存泄漏方面效率最高。
如果有多个结果,可以使用此命令将它们发送到文件中。
jmap-histo3409|jmap-histo:live3409>
jinfo:可以输出和更改当前Java进程的选项。
jps:与Unix上的ps类似,用于显示本地Java进程。您可以在本地查看多个Java程序并显示它们的进程号。
jstat:监控VM内存的强大工具。它可用于监视VM内存中的各种内存量而非堆内存使用情况。
jmap:打印某个Java进程(使用pid)内存中所有“对象”的状态(例如:生成了哪些对象及其数量)。
jconsole:一个ja​​vaGUI监控工具,可以以图形的形式显示各种数据。并可以通过远程连接监控远程服务器VM。
详细说明:在使用这些工具之前,首先使用JPS命令获取每个JVM的运行进程号,然后查看想要查看的JVM。
jstat工具特别强大,有很多选项可以详细查看堆栈各部分的使用情况以及加载的类的数量。使用时需要添加要查看的进程的进程ID以及选择的参数。下面详细介绍各个模块的含义。
jstat-classpid:显示加载的类数量、占用空间等信息。
jstat-compilerpid:显示实时编译VM数量等信息。
jstat-gcpid:可以显示gcs信息、gc次数和停止时间。后五位分别是younggc数量、youngge时间、fullgc数量、fullgc时间、fullgc时间。
jstat-gccacapacity:可以显示VM内存中三代(young、old、perm)对象的使用情况和大小。仪式上,PGC是新生成的perm使用的内存,PC是之前的perm使用的内存。其他人可能会从这个类比中推断出OC是一种纯粹的古代职业。
jstat-gcnewpid:新对象信息。
jstat-gcnewcapacitypid:有关新对象及其容量的信息。
jstat-gcoldpid:有关旧事物的信息。
jstat-gcoldcapacitypid:生成的对象及其属性的信息。
jstat-gcpermcapacitypid:Perm对象及其占用信息。
jstat-utilpid:统计gc变化信息。
jstat-printcompilationpid:当前VM执行信息。
除了上面的模块外,还可以一次添加两个数字,例如:jstat-printcompilation30242506每250毫秒记录一次,共6次。您还可以添加-h3以显示每个标题。分三行。
Jmap是一个可以输出内存中所有内容的工具,它还可以以二进制格式输出VM中的堆栈。
命令:jmap-dump:format=b,file=
file:保存路径及文件名
pid:进程号
?jmap-histo:livepid|less:堆中活跃的对象和大小
?jmap-heappid:查看堆使用信息
jinfo的用途:比较简单,就是Java进程运行时的环境。使用jinfo-optpid,例如:要查看MaxPerm大小2788,可以使用jinfo-flagMaxPermSize2788。
Jconsole是一个用Java编写的GUI程序,用于监控虚拟机和远程虚拟机。它非常容易使用并且具有非常强大的功能。使用方法:只需在命令行中打开jconsole并选择进程即可。
JConsole中内存分区的说明。
EdenSpace(heap):大多数对象的内存最初都是由该线程池分配的。
SurvivorSpace(堆):用于保存edenspace内存池中垃圾回收后未被回收的对象。
TenuredGeneration(堆):保存在长期内存池中存在一段时间的对象。
持久代(非堆):虚拟机维护自己的静态(可重构)数据,例如类对象和方法。Java虚拟机与此类共享数据。该区域分为只读和只写,
CodeCache(非堆):HotSpotJava包含一块虚拟机内存,用于编译和保存本机代码(nativecode),称为“代码缓存”(codecache))。br/>?jstack(检查jvm线程中当前状态,是否存在死锁现象等):jstackpid:threaddump
?jstat-gcutilpid1000100:1000ms统计gc站点100次;
中另外,推荐使用内存对象工具MemoryAnalyzer来查jmapdump