linux jvm查看 linux输出环境变量

大家好,关于linux jvm查看很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于linux输出环境变量的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

tomcat如何启动jvm实例

Tomcat可以通过修改catalina.bat或catalina.sh文件来设置JVM参数并启动。

在Windows环境下,可以打开Tomcat的bin目录下的catalina.bat文件,找到set JAVA_OPTS=的行,添加参数-Xms512M-Xmx1024M来设置初始堆大小和最大堆大小,然后保存文件。接着,在bin目录下双击startup.bat文件来启动Tomcat。在命令行窗口中,可以输入jvisualvm命令来查看Tomcat的JVM参数。

在Linux环境下,可以打开Tomcat的bin目录下的catalina.sh文件,找到JAVA_OPTS=的行,添加参数-Xms512M-Xmx1024M来设置初始堆大小和最大堆大小,然后保存文件。接着,在终端中执行startup.sh来启动Tomcat。同样地,可以使用jvisualvm命令来查看Tomcat的JVM参数。

jmap命令详解---查看JVM内存使用详情

Linux获取java进程PID:cnblogs.com/sxdcgaq8080...

解决命令使用过程中报错的方案:cnblogs.com/sxdcgaq8080...

=========================================

1、jmap命令基本概述

jmap是一个用于输出所有内存中对象的工具,能以二进制形式输出VM中的heap到文本文件中。它可以打印出某个java进程(通过pid)内存内的所有‘对象’情况,如:生成哪些对象及其数量。

在64位机器上使用时,需使用如下方式:jmap-J-d64-heap pid

2、命令格式

复制代码jmap [option](to connect to running process)

连接到正在运行的进程

复制代码jmap [option](to connect to a core file)

连接到核心文件

复制代码jmap [option] [server_id@](to connect to remote debug server)

连接到远程调试服务

复制代码

3.参数说明

1) options:

pid:目标进程的PID,进程编号,可通过ps-ef| grep java查看java进程的PID;

executable:产生core dump的java可执行程序;

core:将被打印信息的core dump文件;

remote-hostname-or-IP:远程debug服务的主机名或ip;

server-id:唯一id,当一台主机上有多台远程debug服务时使用;

2)基本参数:[就是替换[option]位置的参数]

1>-dump:[live,]format=b,file=使用hprof二进制形式输出jvm的heap内容到文件,live子选项可选,指定live选项时,只输出活的对象到文件。命令:jmap-dump:live,format=b,file=myjmapfile.txt 19570结果:myjmapfile.txt文件在/root目录下,可直接打开查看。

2>-finalizerinfo打印正等候回收的对象的信息命令:jmap-finalizerinfo 3772结果:附着到进程ID 19570,等待中...成功附着到JVM,服务器编译器已检测。JVM版本为24.80-b11,等候回收的对象为0个。

3>-heap打印heap的概要信息,GC使用的算法,heap(堆)的配置及JVM堆内存的使用情况。命令:jmap-heap 19570结果:解析:新生代采用的是并行线程处理方式,堆使用情况如下:最小堆使用比例40%,最大堆可用比例70%,最大堆空间大小2048MB,新生代分配大小256MB,最大可新生代分配大小256MB,老年代大小5.1875MB,新生代比例2,新生代与suvivor的比例8,perm区永久代大小128MB,最大可分配perm区大小128MB。

4>-histo[:live]打印每个class的实例数目,内存占用,类全名信息。命令:jmap-histo:live 19570结果:使用jmap将内存信息保存到日志文件a.log,一段时间后,使用文本对比工具分析,可以得知GC回收了哪些对象。

4>-permstat打印classload和jvm heap长久层的信息,包含每个classloader的名字、活泼性、地址、父classloader和加载的class数量。命令:jmap-permstat 19570结果:解析:附着到进程ID 19570,成功附着到JVM,加载的classloader信息如下。

5>-F强迫模式,即使pid未响应,仍可使用-dump或-histo参数。

6>-h|-help打印辅助信息

7>-J传递参数给jmap启动的jvm。

如何查看unix 的java内存使用情况

jmap(linux下特有,也是很常用的一个命令)

观察运行中的jvm物理内存的占用情况。

参数如下:

-heap:打印jvm heap的情况

-histo:打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。

-histo:live:同上,但是只答应存活对象的情况

-permstat:打印permanent generation heap情况

命令使用:

jmap-heap 3409

可以观察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的内存使用情况

输出内容:

jmap-histo 3409| jmap-histo:live 3409

可以观察heap中所有对象的情况(heap中所有生存的对象的情况)。包括对象数量和所占空间大小。

输出内容:

写个脚本,可以很快把占用heap最大的对象找出来,对付内存泄漏特别有效。

如果结果很多,可以用以下命令输出到文本文件。

jmap-histo 3409| jmap-histo:live 3409> a.txt

jinfo:可以输出并修改运行时的java进程的opts。

jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。

jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

jmap:打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。

jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。

详细:在使用这些工具前,先用JPS命令获取当前的每个JVM进程号,然后选择要查看的JVM。

jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。

jstat-class pid:显示加载class的数量,及所占空间等信息。

jstat-compiler pid:显示VM实时编译的数量等信息。

jstat-gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。

jstat-gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。

jstat-gcnew pid:new对象的信息。

jstat-gcnewcapacity pid:new对象的信息及其占用量。

jstat-gcold pid:old对象的信息。

jstat-gcoldcapacity pid:old对象的信息及其占用量。

jstat-gcpermcapacity pid: perm对象的信息及其占用量。

jstat-util pid:统计gc信息统计。

jstat-printcompilation pid:当前VM执行的信息。

除了以上一个参数外,还可以同时加上两个数字,如:jstat-printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。

jmap是一个可以输出所有内存中对象的工具,甚至可以将VM中的heap,以二进制输出成文本。

命令:jmap-dump:format=b,file=heap.bin

file:保存路径及文件名

pid:进程编号

?jmap-histo:live pid| less:堆中活动的对象以及大小

?jmap-heap pid:查看堆的使用状况信息

jinfo:的用处比较简单,就是能输出并修改运行时的java进程的运行参数。用法是jinfo-opt pid如:查看2788的MaxPerm大小可以用 jinfo-flag MaxPermSize 2788。

jconsole是一个用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强。使用方法:命令行里打 jconsole,选则进程就可以了。

JConsole中关于内存分区的说明。

Eden Space(heap):内存最初从这个线程池分配给大部分对象。

Survivor Space(heap):用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。

Tenured Generation(heap):用于保持已经在 survivor space内存池中存在了一段时间的对象。

Permanent Generation(non-heap):保存虚拟机自己的静态(refective)数据,例如类(class)和方法(method)对象。Java虚拟机共享这些类数据。这个区域被分割为只读的和只写的,

Code Cache(non-heap):HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)

?jstack(查看jvm线程运行状态,是否有死锁现象等等信息): jstack pid: thread dump

?jstat-gcutil pid 1000 100: 1000ms统计一次gc情况统计100次;

另外推荐一款查看jmap dump的内存对象工具 MemoryAnalyzer

阅读剩余
THE END