设置堆内存大小_jmap和jhat命令行工具的配合使用,更好的掌握堆内存状况

Java的内存映像工具,jmap,Memory Map for Java,用于生成堆转储快照,一般成为heapdump或者dump文件,出了获取dump文件,这个工具还可以查询finalize执行队列,Java堆和永久代的详细信息,如空间使用率、当前使用的是哪种收集器等。

先来看一下这个命令是怎么用的:

ac0f21e0e250d721ab7b6c7f940bb635.png

由此可见jmap的命令格式为:jmap [option]

option参数为:

no option: 查看进程的内存映像信息,类似 Solaris pmap 命令。heap: 显示Java堆详细信息histo[:live]: 显示堆中对象的统计信息clstats:打印类加载器信息finalizerinfo: 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象dump::生成堆转储快照F: 当-dump没有响应时,使用-dump或者-histo参数. 在这个模式下,live子参数无效.help:打印帮助信息J:指定传递给运行jmap的JVM的参数

1、jmap -heap pid,显示Java堆详细信息,包括使用的GC算法、堆配置信息和各内存区域内存使用信息

78e9144c87bae180ea1a38229eb60b75.png

2、jmap -histo:live pid,显示堆中对象的统计信息,如果指定了live子选项,则只计算活动的对象。

3f0a4524811835050af9a22a1a46eb9f.png

打印的统计信息如下(包括每个Java类、对象数量、内存大小(单位:字节)、完全限定的类名):

2161dabbf78a9cb1de7e5c7afffac8b6.png

3、jmap -clstats pid,打印类加载器信息

31225cb20120c3b3257eca836a625edf.png

-clstats是-permstat的替代方案,在JDK8之前,-permstat用来打印类加载器的数据,打印Java堆内存的永久保存区域的类加载器的智能统计信息。

4、jmap -finalizerinfo pid,打印等待终结的对象信息

5、jmap -dump: pid,生成堆转储快照dump文件

以hprof二进制格式转储Java堆到指定filename的文件中。live子选项是可选的。如果指定了live子选项,堆中只有活动的对象会被转储。想要浏览heap dump,你可以使用jhat(Java堆分析工具)读取生成的文件,我们先来生成这个文件:

c41744136c0f4cc30d77b7a3a680afc0.png
78b2e436f5ffd806198e713606e02253.png

生成了这个堆转储快照,接下来就到了jhat命令行工具的使用了,jhat是虚拟机堆转储快照分析工具,该命令与jmap配合使用,来分析jmap生成的堆转储快照,是对好基友。jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。

注意:一般在生成环境中,不使用jhat命令行工具在部署服务器上直接来分析堆转储快照,因为分析堆转储快照是一个耗时且消耗硬件资源的过程,还有就是jhat的分析功能相对来说比较简陋,有比jhat更为先进的工具,例如EMA,IBM HA等,都是更强大更专业的分析功能。

先来看一下它的使用方法:

408d71997e426dc061eb0b01310e0035.png

这些可选择的选项含义是:

-J 将运行时参数传递给运行jhat的JVM。例如,-J-Xmx512m设置使用的最大堆内存大小为512MB。-stack false/true关闭跟踪对象分配调用堆栈。注意,如果heap dump中的分配位置信息不可用,你必须设置此标识为false。此选项的默认值为true。-refs false/true关闭对象的引用跟踪。默认为true。默认情况下,反向指针(指向给定对象的对象,又叫做引用或外部引用)用于计算堆中的所有对象.-port port-number设置jhat的HTTP服务器的端口号。默认为7000。-exclude exclude-file指定一个数据成员列表的文件,这些数据成员将被排除在”reachable objects”查询的范围之外。举个例子,如果文件列有java.lang.String.value,那么,当计算指定对象”o”的可达对象列表时,涉及到java.lang.String.value字段的引用路径将会被忽略掉。-baseline baseline-dump-file指定一个基线heap dump。在两个heap dump(当前heap dump和基线heap dump)中存在相同对象ID的对象,不会被标记为”new”。其他的对象将被标记为”new”。这在比较两个不同的heap dump时非常有用。-debug int设置此工具的调试级别。0意味着没有调试输出。设置的值越高,输出的信息就越详细。-version 报告版本号并退出。-h|-help输出帮助信息并退出。

输入命令来分析刚才生成的堆转储文件:

099a147caa412211d2284300fb73aa79.png

打开浏览器来访问,端口为默认的7000:

10bb115962fd918161084ae87cdc8d40.png

在这个页面的最下方,有个Other Queries,点击不同的链接可以展示不同的内容:

0b984d3ef214c60e92887ffc6e65c2a7.png

比如我们点击“Show heap histogram” 链接,展示堆快照直方图:

5a38f0f17bb54f4235d3e26dd515eba7.png

这些JDK自带的工具,给予我们分析和排查问题带来了极大的方便,掌握这些工具,或者其他更强大和更完美的工具,让我们分析线上问题的时候,不再手足无措。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sessionState 配置方案

配置SQL Server Session方法 以下过程是在Win 2003 SP2 IIS 6.0, ASP.NET 2.0, SQL Server 2005下进行的。 1. 安装Session数据库 到Framework目录 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727运行下面的命令: aspnet_regsql.exe -ssadd -sstype c -d [DB] -S [Server] …

Open*** 服务器的搭建

服务介绍直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,Open无疑是Linux下开源的先锋,提供了良好的性能和友好的用户GUI。它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。实验拓扑图实验环境xuegod 63 …

怎么批量选择目标_全日制专升本一次可以报几个学校?目标院校应该怎么选择?...

很多普通专升本考生们在备考的时候会对报考环节存在疑问,比如,普通专升本可以报几个学校?报考院校怎么选择?下面我们就这两个问题进行解答。想要知道湖北普通专升本考试一次可以报几个院校和专业,我们不妨先来看看《省…

jdbcTemplate快速入门

一、 c3p0和dbcp区别 二、导包 hibernate通过映射自动创建表; 三、代码实现 转载于:https://www.cnblogs.com/wmqiang/p/11617387.html

bean.xml配置数据源和读取配置文件配置数据源

一、bean.xml配置数据源 bean.xml装配bean,依赖注入其属性的时候,对应实体类中属性一定要有set方法, 二、读取配置文件配置数据源 1、配置文件 bean.xml配置: classpath就是src目录下,${ } 当作是Spring表达式&#xf…

事务保存点savepoint

一、 转载于:https://www.cnblogs.com/wmqiang/p/11618714.html

掌握基于AOP事务管理

一、手动管理和半自动工厂模式 二、AOP事务管理 1、表达式中,第一个※是返回值所有类型,service包下一个点意思是service包下的类,两个点意思是service包下的类和其子包下的类也包含,括号前面※代表的是所有方法,括号里…

ai钢笔工具怎么描线_骨灰级的AI钢笔工具运用技巧

明白了方向线的方向对曲线形态的影响后,我们来看一下方向线长短造成的影响如下图般,在同一方向上拖拉方向线:(可使用"直接选择工具")对于一个锚点而言,如果方向线越长,那么曲线在这个方向上走的路程就越长&a…

基于注解的事务管理

一、Transactional 注解的源码,定义属性时给默认值 二、基于注解的事务管理代码实现 1、bean.xml中配置 2、业务实施层的代码注解配置: 其中,配在类上则所有方法都被事务管理,也可配置在单独方法上; 转载于:https://ww…

PostgreSQL入门篇学习笔记(七)

2019独角兽企业重金招聘Python工程师标准>>> pg数据库:能提供读写全功能的服务器称为Primary database或者master database。若备份服务器在接受主数据库同步数据和应用同步数据库时,不能提供只读的服务,则该备份数据库称之为warm…

Meteor创建示例项目 Simple-todos

2019独角兽企业重金招聘Python工程师标准>>> 本笔记&#xff0c;基于Windows环境。 1、Meteor提供了一些示例项目供开发者参考&#xff0c;打开命令行&#xff0c;输入meteor create --list 可以查看提供了哪些示例项目 2、通过meteor create --example <project…

RHEL6下squid代理之正向代理

Squid cache&#xff08;简称为Squid&#xff09;是一个流行的自由软件&#xff08;GNU通用公共许可证&#xff09;的代理服务器和Web缓存服务器。Squid有广泛的用途&#xff0c;从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度&#xff0c;到为一组人共享…

跨平台Markdown编辑软件Typora mac功能介绍

Typora mac是一款跨平台的Markdown编辑器&#xff0c;支持Windows、MacOS和Linux操作系统。它具有实时预览功能&#xff0c;能够自动将Markdown文本转换为漂亮的排版效果&#xff0c;让用户专注于写作内容而不必关心格式调整。Typora Mac版除了支持常见的Markdown语法外&#x…

如何解决 SQL Server 安装程序中的 COM+ 系统配置检查失败问题

转载自&#xff1a;http://technet.microsoft.com/zh-cn/library/ms143690(SQL.90).aspxSQL Server 2005 联机丛书&#xff08;2008 年 11 月&#xff09;如何解决 SQL Server 安装程序中的 COM 系统配置检查失败问题Microsoft SQL Server 2005 安装程序检查 COM 是否已正确配置…

mysql decimal(6_MySQL(六) decimal数据默认处理

create table decimal_test(id int auto_increment PRIMARY key,score decimal(5,2) -- 取值范围是 -999.99 到 999.99);decimal(M,D)M整数位小数位-- 整数的位数必须小于等于m-d&#xff0c;不然报错。小数的位数可以大于d位。多出d位时会做四舍五入&#xff0c;截取到d位。--…

[LeetCode]题解(python):058-Length of Last Word

题目来源&#xff1a; https://leetcode.com/problems/length-of-last-word/ 题意分析&#xff1a; 给出只包括大小写和空格的字符&#xff0c;输出最后一个单词的长度。 题目思路&#xff1a; 从最后一个字符开始搜索&#xff0c;如果字符非空格&#xff0c;则往前推一位&…

Oracle新手笔记(2) 关于Oracle 9i或9i以上版本客户端连接Oracle 8i及8i版本以下服务器端中文字符乱码的解决办法...

在做项目过程中&#xff0c;遇到Oracle 9i或9i版本以上客户端连接Oracle 8i及8i版本以下服务器端时&#xff0c;查询出来的中文数据全部变成了乱码。经查询资料终于解决了乱码问题。 开发工具是ASP.NET&#xff08;C#&#xff09; Oracle&#xff0c;使用System.Data.OracleCli…

mysql 5.7安装教程linux_Mysql5.7 Linux安装教程

1系统约定安装文件下载目录&#xff1a;/data/softwareMysql目录安装位置&#xff1a;/usr/local/mysql数据库保存位置&#xff1a;/data/mysql日志保存位置&#xff1a;/data/log/mysql执行如下命名&#xff1a;#mkdir /data/software#cd /data/software--下载安装包--建议&am…

如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于Matlab R2015b版 )

如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包&#xff08;基于MatlabR2015b版&#xff09; 关键字&#xff1a;MatlabR2015b,可独立运行,可脱离Matlab环境,m文件,Matlab程序 如何将MATLAB程序.m文件发布为独立的不依赖MATLAB环境可执行的程序包。本文演示了基于…

[C#]利用键代码自动转换生成字母键或其它键信息

先上图说明目的&#xff1a; 有时需要将A到Z&#xff08;或更多的键盘信息&#xff09;放到一个组合框或其它控件中&#xff0c;可以用循环语句轻松搞定&#xff1a; using System.Collections .ObjectModel ;//引用泛型数组空间 namespace mouseclick1{ //返回26个字母的泛…