JVM学习手册(X):查看堆内存使用情况以及排错
2019独角兽企业重金招聘Python工程师标准>>>
平时出现内存溢出以及死锁,一般处理方式都是查看日志,找到抛出异常的代码行,然后本地分析代码,但是这样对于线上排查十分糟糕,这段时间在研究JVM发现了几个比较好的工具和指令.
1.针对频繁GC和内存溢出:
(1).首先找到有哪些线程在执行,使用指令jps.
(2).查看堆内存使用情况,使用指令jstat -gc 进程ID 刷新毫秒 刷新次数(PS: jstat -gc 1111 250 5,即对于线程1111在堆中使用情况,250毫秒刷新一次,总共刷新5次)
(3).可以将堆内存使用情况生成堆转储文件,使用指令jmap -dump:format=b,file=文件名 进程ID
(4).使用jhat或者Memory Analyzer分析堆转储文件,这里使用Memory Analyzer来分析.
(5).首先需要安装Memory Analyzer,地址为http://archive.eclipse.org/mat/1.2/update-site/ 或者 下载插件版都可以
(6).将堆转储文件加载进Eclipse.
(7).过段时间再次生成一个堆转储文件.
(8).将两个文件都用Memory Analyzer加载进去,
(9).选择柱状图标志(Create a histogram...),选择最后一个标志(compare to another Heap Dump),最后选择多个文件夹标志(Group result by)中的Group by package,对比两次生成文件产生对象是否有差异,然后定位具体代码.
2.针对死锁
(1).首先找到有哪些线程在执行,使用指令jps.
(2).查看进程运行状态,使用指令jstack -l 进程ID(-l 显示线程阻塞/死锁的情况)
(3).根据打印出的信息如果有异常情况很容易就找到出问题的代码行数
转载于:https://my.oschina.net/u/2462104/blog/1860713
JVM学习手册(X):查看堆内存使用情况以及排错相关推荐
- JVM之通过jstat命令进行查看堆内存使用情况
文章目录 基本概念 案例 -class 查看class加载统计 -compiler 查看编译统计 -gc 垃圾回收统计 -gccapacity 堆内存统计 -gcmetacapacity 元数据空间统 ...
- java 设置年轻代堆大小,[JVM学习之路]五堆(一)堆的内存结构参数设置分代思想内存分配...
[JVM学习之路]五堆(一)堆的内存结构参数设置分代思想内存分配 [JVM学习之路]五.堆(一)堆的内存结构.参数设置.分代思想.内存分配策略及TLAB 一.堆的核心概述 堆的特点: 1.一个jvm实 ...
- JVM学习笔记(四)------内存调优
首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提 ...
- 大剑无锋之如何查看一个java进程的堆内存使用情况(jps,jstack,jmap)【面试推荐】
jps jps主要用来输出JVM中运行的进程状态信息. 命令行参数选项说明如下: 1 -q 不输出类名.Jar名和传入main方法的参数 2 -m 输出传入main方法的参数 3 -l 输出main类 ...
- 【JVM学习笔记06】堆
七.堆 Java堆是Java虚拟机所管理的内存中最大的一块,其唯一的目的是存放对象实例.java堆是被所有线程所共享的一块内存区域(TLAB区除外),在虚拟机启动时创建,几乎所有对象的实例都存储在堆中 ...
- 查看当前内存使用情况---练习记录
查看当前内存使用情况. #!/bin/bash mem_quota=80 mem_total=`cat /proc/meminfo | grep MemTotal | awk '{print $2}' ...
- (FortiGate)飞塔防火墙查看CPU内存使用情况
查看CPU内存使用情况(以下两个命令实现的效果一致) get system performance top diagnose sys top 也可以在后面加上刷新时间及显示行数的参数: diagnos ...
- linux查看进程的内存使用情况,[转]linux下查看进程内存使用情况
动态查看一个进程的内存使用 1.top命令 top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s 如果想根据内存使用量进行排序,可以shift + ...
- 超赞 不愧是美团内部的JVM学习手册,从头到尾全是精华
Hello,今天给各位童鞋们分享的是JVM,赶紧拿出小本子记下来吧 一.内存溢出 内存溢出的原因:程序在申请内存时,没有足够的空间. 1. 栈溢出 方法死循环递归调用(StackOverflowErr ...
最新文章
- python pandas常用函数_Python pandas常用函数详解
- Hadoop - MapReduce MRAppMaster-剖析
- python回归分析预测模型_Python与线性回归模型预测房价
- RTSP摄像机为什么还保留MJPEG编码格式
- 水涨船高!造车新势力平均月薪15367元,自动驾驶算法岗年薪可达百万
- SQL Server系统数据库– msdb数据库
- 常见熟知端口号的记忆技巧
- 基于SSM的房屋租赁系统
- 数据通信技术初级工程师证题库
- ViewPager Kotlin 教程入门
- java指纹识别+谷歌图片识别技术
- 目前主流的几种数字视频压缩编解码标准(转载)
- 学习QT一周做的小游戏-钢琴块
- 计算机断电后自动启动,断电来电后自动开机,神奇的电脑开机方法
- CnSeu社工库免费查询_ip代理-golang测试纯真ip库与免费版ipip.net库比较
- 淘宝新品补单平台怎么样才能为你的产品精准打标?大神导航,一个神奇的网站,从此开启大神之路!
- TCP/IP网络初识
- 20120814-虚拟串口VSPD的使用方法
- 为你的blog增加精美flash时钟
- unity3D女性人物模型 适合用于游戏开发的素材
热门文章
- 在linux系统下java实现pdf导出汉字无法显示_Linux环境下iText生成pdf中文不显示问题...
- java base64字符 转图片_JAVA实现图片与base64字符串之间的转换详解
- HTML5 classList 操作类名
- it招聘上说熟悉linux系统,运维入门:细说Linux,做IT必看
- java cookie id,我如何在Java中获取会话ID
- java.lang.Object android.content.Context.getSystemService(java.lang.String)‘ on a null object
- 关于上篇文章的okhttp中对于onFailure回调的异常捕获
- 日常视频一秒变游戏,人物可以随意操控:全靠Facebook的实时算法
- Waymo也商业化了!“早期乘客”项目开始测试收费,凤凰城人民掏了腰包
- CMU计算机学院院长Andrew Moore离职,下一任院长人选未定