当前位置:首页 > 内存 > 正文

jvm内存查看命令

  • 内存
  • 2024-04-25 09:55:14
  • 3821

一、如何查看unix的java内存使用情况jmap(Linux特定且非常常用的命令)
观察正在运行的jvm的物理内存使用情况。
参数如下:
-heap:打印jvmheap的情况
-histo:打印jvmheap的直方图。输出信息包括类名、对象数量、对象占用大小。
-histo:live:同上,但只允许存活对象
-permstat:打印永久堆生成情况
命令用法:
jmap-heap3409
NewGenerationobservable(EdenSpace、FromSpace、ToSpace),租用,使用PermGeneration内存
输出内容:
jmap-histo3409|jmap-histo:live3409
可以观察堆(heap)中所有对象的状态所有剩余物品的情况)。包括物体的数量和占用的空间。
输出内容:
编写一个脚本,可以快速找到占用堆最大的对象,这对于处理内存泄漏特别有效。
如果您有多个结果,可以使用以下命令将它们导出到文本文件。
jmap-histo3409|jmap-histo:live3409>
jinfo:可以导出和修改正在运行的java进程的选。
jps:与Unix上的ps类似,用于显示本地java进程。您可以查看本地运行的多个java程序并显示它们的进度号。
jstat:监控VM内存的强大工具。可用于监视各种堆和非堆大小以及虚拟机内存中的内存使用情况。
jmap:打印给定java进程内存中所有“对象”的状态(使用pid)(例如:创建了哪些对象及其数量)。
jconsole:javaGUI监控工具,可以图形化显示各种数据。并且可以通过远程连接远程监控VM服务器。
详细说明:在使用这些工具之前,首先使用JPS命令获取每个JVM当前的进程号,然后选择要查看的JVM。
jstat工具特别强大,有很多选项可以深入了解堆的每个部分的使用方式以及加载了多少个类。使用时需要添加要查看的进程的进程ID以及选择的参数。下面详细介绍各个参数的含义。
jstat-classpid:显示加载的类数量、占用空间等信息。
jstat-compilerpid:实时显示VM编译数量等信息。
jstat-gcpid:可以显示gc信息,查看gc次数、时间。最后五个条目是younggc编号、younggc时间、fullgc编号、fullgc时间和总gc时间。
jstat-gccapacity:可以显示VM内存中三代(young、old、perm)对象的使用情况和占用大小示例:PGCMN显示perm的最大内存使用量,PGMCMX显示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次。三行。
Jmap是一个可以导出内存中所有对象的工具。它甚至可以将VM中的堆导出为二进制格式的文本。
命令:jmap-dump:format=b,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(堆):用于维护已经存在于Survivor内存区域一段时间的对象。
PermanentGeneration(不是堆):存储虚拟机本身的静态(反射)数据,例如类对象和方法。Java虚拟机共享这些类数据。该区域分为只读和只写,
CodeCache(非堆):HotSpotJava虚拟机包含一块用于编译和存储本机代码的内存,称为“代码缓存”(codecache))
?jstack(检查jvm线程的运行状态,看看是否有死锁等):jstackpid:threaddump
?jstat-gcutilpid1000100:每1000毫秒统计gc状态100次;
另外,推荐内存对象工具MemoryAnalyzer查看jmapdump
二、linuxjvm内存大小怎么查看以WAS为例:
[tmp]$ps-ef|grepjava
root978710Sep17?00:02:48/opt/IBM/WebSphere/AppServer/java/bin/java-Xms50m-Xmx256m
-Xms和-Xmx分别表示分配给JVM的最小内存和最大内存。
对于堆栈信息,您可以使用kill-3,后跟java进程的pid来创建线程转储。


三、怎么查看GC及jvm配置JVisualVM是JDK6update7之后推出的工具。它类似于JProfiler工具。基于该工具,您可以查看程序中的内存消耗、线程执行状态以及消耗CPU和内存的动作。