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):查看堆内存使用情况以及排错相关推荐

  1. JVM之通过jstat命令进行查看堆内存使用情况

    文章目录 基本概念 案例 -class 查看class加载统计 -compiler 查看编译统计 -gc 垃圾回收统计 -gccapacity 堆内存统计 -gcmetacapacity 元数据空间统 ...

  2. java 设置年轻代堆大小,[JVM学习之路]五堆(一)堆的内存结构参数设置分代思想内存分配...

    [JVM学习之路]五堆(一)堆的内存结构参数设置分代思想内存分配 [JVM学习之路]五.堆(一)堆的内存结构.参数设置.分代思想.内存分配策略及TLAB 一.堆的核心概述 堆的特点: 1.一个jvm实 ...

  3. JVM学习笔记(四)------内存调优

    首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提 ...

  4. 大剑无锋之如何查看一个java进程的堆内存使用情况(jps,jstack,jmap)【面试推荐】

    jps jps主要用来输出JVM中运行的进程状态信息. 命令行参数选项说明如下: 1 -q 不输出类名.Jar名和传入main方法的参数 2 -m 输出传入main方法的参数 3 -l 输出main类 ...

  5. 【JVM学习笔记06】堆

    七.堆 Java堆是Java虚拟机所管理的内存中最大的一块,其唯一的目的是存放对象实例.java堆是被所有线程所共享的一块内存区域(TLAB区除外),在虚拟机启动时创建,几乎所有对象的实例都存储在堆中 ...

  6. 查看当前内存使用情况---练习记录

    查看当前内存使用情况. #!/bin/bash mem_quota=80 mem_total=`cat /proc/meminfo | grep MemTotal | awk '{print $2}' ...

  7. (FortiGate)飞塔防火墙查看CPU内存使用情况

    查看CPU内存使用情况(以下两个命令实现的效果一致) get system performance top diagnose sys top 也可以在后面加上刷新时间及显示行数的参数: diagnos ...

  8. linux查看进程的内存使用情况,[转]linux下查看进程内存使用情况

    动态查看一个进程的内存使用 1.top命令 top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s 如果想根据内存使用量进行排序,可以shift + ...

  9. 超赞 不愧是美团内部的JVM学习手册,从头到尾全是精华

    Hello,今天给各位童鞋们分享的是JVM,赶紧拿出小本子记下来吧 一.内存溢出 内存溢出的原因:程序在申请内存时,没有足够的空间. 1. 栈溢出 方法死循环递归调用(StackOverflowErr ...

最新文章

  1. python pandas常用函数_Python pandas常用函数详解
  2. Hadoop - MapReduce MRAppMaster-剖析
  3. python回归分析预测模型_Python与线性回归模型预测房价
  4. RTSP摄像机为什么还保留MJPEG编码格式
  5. 水涨船高!造车新势力平均月薪15367元,自动驾驶算法岗年薪可达百万
  6. SQL Server系统数据库– msdb数据库
  7. 常见熟知端口号的记忆技巧
  8. 基于SSM的房屋租赁系统
  9. 数据通信技术初级工程师证题库
  10. ViewPager Kotlin 教程入门
  11. java指纹识别+谷歌图片识别技术
  12. 目前主流的几种数字视频压缩编解码标准(转载)
  13. 学习QT一周做的小游戏-钢琴块
  14. 计算机断电后自动启动,断电来电后自动开机,神奇的电脑开机方法
  15. CnSeu社工库免费查询_ip代理-golang测试纯真ip库与免费版ipip.net库比较
  16. 淘宝新品补单平台怎么样才能为你的产品精准打标?大神导航,一个神奇的网站,从此开启大神之路!
  17. TCP/IP网络初识
  18. 20120814-虚拟串口VSPD的使用方法
  19. 为你的blog增加精美flash时钟
  20. unity3D女性人物模型 适合用于游戏开发的素材

热门文章

  1. 在linux系统下java实现pdf导出汉字无法显示_Linux环境下iText生成pdf中文不显示问题...
  2. java base64字符 转图片_JAVA实现图片与base64字符串之间的转换详解
  3. HTML5 classList 操作类名
  4. it招聘上说熟悉linux系统,运维入门:细说Linux,做IT必看
  5. java cookie id,我如何在Java中获取会话ID
  6. java.lang.Object android.content.Context.getSystemService(java.lang.String)‘ on a null object
  7. 关于上篇文章的okhttp中对于onFailure回调的异常捕获
  8. 日常视频一秒变游戏,人物可以随意操控:全靠Facebook的实时算法
  9. Waymo也商业化了!“早期乘客”项目开始测试收费,凤凰城人民掏了腰包
  10. CMU计算机学院院长Andrew Moore离职,下一任院长人选未定