java 内存分析工具 生成 dump_java内存检测工具

java 内存分析工具 生成 dump_java内存检测工具jmap-heap1234查看进程号为1234的Java程序的整个jvm内存状态jmap-histo1234查找进程号为1234的java程序的jvm堆中对象详细占用情况jmap-dump:format=b,file=/my.dump1234导出1234进程的java程序的整个JVM信息jhat-J-Xmx1024M/my.dump,启动web服务查看jmap导出的jav…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

jmap -heap 1234 查看进程号为1234的Java程序的整个jvm内存状态

jmap -histo 1234 查找进程号为1234的java程序的jvm堆中对象详细占用情况

jmap -dump:format=b,file=/my.dump 1234  导出1234进程的java程序的整个JVM信息

jhat -J-Xmx1024M /my.dump, 启动web服务查看jmap导出的java程序的jvm信息。

jstack 1234 查看1234进程的所有堆栈信息。

以上命令的功能都可以从jVisualVM程序获取,双击运行即可。

jmap是java自带的工具

查看整个JVM内存状态

jmap -heap [pid]

要注意的是在使用CMS GC 情况下,jmap -heap的执行有可能会导致JAVA 进程挂起

查看JVM堆中对象详细占用情况

jmap -histo [pid]

导出整个JVM 中内存信息

jmap -dump:format=b,file=文件名 [pid]

jhat是sun 1.6及以上版本中自带的一个用于分析JVM 堆DUMP 文件的工具,基于此工具可分析JVM HEAP 中对象的内存占用情况

jhat -J-Xmx1024M [file]   (此处的file指的是jmap -dump导出的内存数据文件)

执行后等待console 中输入start HTTP server on port 7000 即可使用浏览器访问 IP:7000

eclipse Memory Analyzer

Eclipse 提供的一个用于分析JVM 堆Dump文件的插件。借助这个插件可查看对象的内存占用状况,引用关系,分析内存泄露等。

kill -3 [pid]

在Linux 上找到Java所在的进程号,然后执行以上命令,线程的相关信息就输出到console

jstack

jstack 是sun JDK 自带的工具,通过该工具可以看到JVM 中线程的运行状况,包括锁等待,线程是否在运行

执行 jstack [pid] ,线程的所有堆栈信息

“http-8080-10” daemon prio=10 tid=x0a949bb60 nid=0x884  waiting for monitor entry […]

“http-8080-10” 这个线程处于等待状态。 waiting for monitor entry 如果在连续几次输出线程堆栈信息都存在于同一个或多个线程上时,则说明系统中有锁竞争激烈,死锁,或锁饿死的想象。

“http-8080-11” daemon prio=10 tix=xxx nid=xxx in object.wait() […]

java.lang.Thread.State:waiting (on object monitor)

该表示http-8080-11的线程处于对象的Wait 上,等待其他线程的唤醒,这也是线程池的常见用法。

“Low Memory Detector”daemon prio=10 tix=xx nid=xxx runnable […] java.lang.Thread.State:runnable

表示“Low Memory Detector” 的线程处于Runable状态,等待获取CPU的使用权.

jvisualvm

一.Java VisualVM 概述

对于使用命令行远程监控jvm 太麻烦 。 在jdk1.6 中 Oracle 提供了一个新的可视化的。 JVM 监控工具 Java VisualVM 。jvisualvm.exe 在JDK 的 bin 目录下。

双击启动 Java VisualVM 后可以看到窗口左侧 “应用程序 ”栏中有“ 本地 ”、“远程 ” 、“快照 ”三个项目。

“本地 ”下显示的是在 localhost 运行的 Java 程序的资源占用情况,如果本地有 Java 程序在运行的话启动 Java VisualVM 即可看到相应的程序名,点击程序名打开相应的资源监控菜单,以图形的形式列出程序所占用的 CPU 、 Heap 、 PermGen 、类、线程的 统计信息。

“远程” 项下列出的远程主机上的 Java 程序的资源占用情况,但需要在远程主机上运行 jstatd 守护程序

VisualVM分为 3 类, 本地 它会自动侦测到,并显示出来

双击Local 下的任一节点,看到右边的变化 ,你可以监控 CPU ,内存,类,线程等运行状况,实时监控服务器性能。

右键 VisualVM我们可以看到 Thread Dump, Heap Dump

做 Thread Dump 很快,马上就可以看到结果

Heap Dump要稍花费一些时间(可以看到当前 heap 里对象的数量及占用的比例,做 OOM 很好用)

对其功能不再做描述,可以查阅网上相关质量,我们主要讲的是如何使用 VisualVM 远程监控。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186854.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 算法学习网站推荐

    算法学习网站推荐博主最近在学算法,看了很多不错的文章,顺便推荐几个写的不错的网站~我会慢慢更新1、基础算法学习清单~2、基础的数据结构!3、杂七杂八的算法学习~(这位博主写的东西很杂但是还是不错的)4、ACM习题!5、约瑟夫环问题~(简单的问题也有非常巧妙的解法,这位博主改的一个优化算法非常有意思)6.、A*算法7、LeetCode(这个应该大家都知道,刷题网站)8、我个人g…

  • linux修改用户密码命令_linux更改用户密码的命令

    linux修改用户密码命令_linux更改用户密码的命令Linux修改用户密码使用的Linux版本是:ubuntu-18.10-live-server-amd64知道一个用户名密码时,修改用户密码,各个版本下都是通用的;重置密码的时候,版本不同,可能操作的地方不一样了。如果一个账号的密码都不记得了(这通常是需要修改用户密码最多的情况),那就需要重置密码,相对就比较复杂一些,放在最后讲。但凡知道一个用户的密码,那就好办。(普通用户登录的情况下,也可以修改root用户的密码。)1.知道一个账号的密码这就是正常情况下,修改用户密码。1.1知道roo

  • Linux安装jdk步骤_jdk linux安装

    Linux安装jdk步骤_jdk linux安装Linux的使用相信大家都要用到java吧!在使用java前我们得先安装jdk以及配置环境变量等工作;下面小编给大家分享关于Linux安装jdk的详细步骤:一、登录虚拟机进入终端切换到root用户,输入:su接着输入密码再输入:cd…回到root用户二、查看Linux系统是否有自带的jdk:1、输入:java-version2、发现有输入:rpm-qa|grepjav…

  • 关于iptabels的-A与-I参数

    关于iptabels的-A与-I参数

  • Aspose导出word[通俗易懂]

    Aspose导出word[通俗易懂]Aspose.word是一款非常好用的用于word操作的dll,你可以无需安装MicrosoftOffice软件就能进行工作,在学习Aspose.word导出word之前,你最好了解一下Doc的树结构图,这有利于你更好的了解掌握,可以先看一下Asposeword编程指南了解一下。一.首先我们先来介绍一下word文档的几个核心点:Document,DocumentBuilder;Docum

    2022年10月30日
  • linux安装p12,用命令行安装mobileprovision和p12证书

    linux安装p12,用命令行安装mobileprovision和p12证书我这边使用python来编写的,基本达到了最大化程度的解耦,其他人或者其他地方都可以直接使用。先创建installMobileProfile.py#!/usr/bin/python#-*-coding:UTF-8-*-importsysimportcommandsimportosparamsCount=len(sys.argv)if(paramsCount!=5):prin…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号