linux jmap命令详解,jmap命令 linux jmap如何使用

1, linux jmap如何使用

5819c4afe0671002a103af80a05a2283.png

jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小。命令格式:jmap [options] pid-dump:[live,]format=b,file=--dump堆到文件,live指明是活着的对象,file指定文件名-finalizerinfo 打印等待回收对象的信息-J 提供jvm选项,如:-J-Xms256m

2, 怎样使用jstack诊断Java应用程序故障

t01aabaa8fe9f4c733a.png.jpg

如果单靠通过查看代码是很难去发现这个问题,在这一次故障排查中,我也学到了怎样更好的使用jvm监控工具来进行诊断,主要用到了jstack和jmap命令,jmap上次已经讲过就不再讲了,下面就一个例子来讲怎么使用jstack来对的Java程序进行诊断。首先让我们来了解一下jstack这个命令的作用,jstack 是一个可以返回在应用程序上运行的各种各样线程的一个完整转储的实用程序,您可以使用它查明问题。jstack [-l] ,jpid可以通过使用jps命令来查看当前Java程序的jpid值,-l是可选参数,它可以显示线程阻塞/死锁情况。/*** 死锁例子* @author crane.ding* @since 2011-3-20*/public class DeadLock {public static void main(String[] args) {final Object obj_1 = new Object(), obj_2 = new Object();Thread t1 = new Thread("t1"){@Overridepublic void run() {synchronized (obj_1) {try {Thread.sleep(3000);} catch (InterruptedException e) {}synchronized (obj_2) {System.out.println("thread t1 done.");}}}};Thread t2 = new Thread("t2"){@Overridepublic void run() {synchronized (obj_2) {try {Thread.sleep(3000);} catch (InterruptedException e) {}synchronized (obj_1) {System.out.println("thread t2 done.");}}

3, jmap dump文件怎么打开

33660b91f253e04e2bc4d033ae5dc85e.png

首先用jmap命令查看该进程的jvm参数,其中PS Perm Generationcapacity = 268435456 (256.0MB)used = 25061360 (23.900375366210938MB)free = 243374096 (232.09962463378906MB)9.336084127426147% usedcapacity 代表者你的永久代最大内存 used代表已经使用如果capacity过小会导致java.lang.OutOfMemoryError: PermGen space 楼上2位都给出了如何调整该参数

4, java中毫无征兆的内存溢出有可能来自哪里

t0143049927b87bd9a7.png.jpg

java dump heap 是分配给实例类和数组对象运行数据区,所有java线程在运行期间共享heap中的数据。Java heap dump相当于java应用在运行的时候在某个时间点上打了个快照(snapshot)。有java dump文件生成的方式如下:1.使用$JAVA_HOME/bin/jmap -dump来触发,eg:jmap -dump:format=b,file=/home/longhao/heamdump.out2.使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic>操作>dumpHeap中,点击 dumpHeap按钮。生成的dump文件在java应用的根目录下面。3.在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError,当应用抛出OutOfMemoryError时生成dump文件。4.使用hprof。启动虚拟机加入-Xrunhprof:head=site,会生成java.hprof.txt文件。该配置会导致jvm运行非常的慢,不适合生产环境。

名词解释

MB

MB,英文简写,计算机中的一种储存单位,全称MByte。 MB(全称MByte):计算机中的一种储存单位,读作“兆”。数据单位MB与Mb(注意B字母的大小写)常被误认为是一个意思,其实MByte含义是“兆字节”,Mbit的含义是“兆比特”。MByte是指字节数量,Mbit是指比特位数。MByte中的“Byte”虽然与Mbit中的“bit”翻译一样,都是比特,也都是数据量度单位,但二者是完全不同的。Byte是“字节数”,bit是“位数”,在计算机中每八位为一字节,也就是1Byte=8bit,是1:8的对应关系。因此在书写单位时一定要注意B字母的大小写和含义。

参数

参数(parameter)是一个数学概念,指在问题中提供参考(不属于必须研究范围)的变量。 我们在研究当前问题的时候,关心某几个变量的变化以及它们之间的相互关系,其中有一个或一些叫自变量,另一个或另一些叫因变量。如果我们引入一个或一些另外的变量来描述自变量与因变量的变化,引入的变量本来并不是当前问题必须研究的变量,我们把这样的变量叫做参变量或参数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值