java:线上问题排查常用手段

一、jmap找出占用内存较大的实例

先给个示例代码:

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;

/**
 * Created by 菩提树下的杨过 on 05/09/2017.
 */
public class OOMTest {

    public static void main(String[] args) throws InterruptedException {
        CountDownLatch latch = new CountDownLatch(1);
        int max = 10000;
        List<Person> list = new ArrayList<>(max);
        for (int j = 0; j < max; j++) {
            Person p = new Person();
            p.setAge(100);
            p.setName("菩提树下的杨过");
            list.add(p);
        }
        System.out.println("ready!");
        latch.await();
    }

    public static class Person {
        private String name;
        private int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}  

List中放了1w个Person对象的实例,先把这段程序跑起来

javac OOMTest.java

java OOMTest

然后再开一个窗口,jps -l  找出该程序的pid

然后执行 jmap -histo:live 7320 (注:如果输出内容太多,只想看排名前10的,可以加 | head -10)

输出结果,会按内存使用量,从大到小依次把对象的实际个数,占用内存数量(字节数)打印出来,最后还会输出汇总信息

以上面的示例来说,OOMTest$Person这个类的实例数为10000个,总共占用240000字节(注:即每个实例24字节),这个程序总占用内存数为725464字节,约:0.69M。

另外还有一些[C,[B这类class name,大概意思为:

[C is a char[]
[S is a short[]
[I is a int[]
[B is a byte[]
[[I is a int[][]

[C对象往往跟String有关,String其内部使用final char[]数组来保存数据的

constMethodKlass/ methodKlass/ constantPoolKlass/ constantPoolCacheKlass/ instanceKlassKlass/ methodDataKlass

与Classloader相关,常驻与Perm区。

 

二、

时间: 2024-10-26 05:31:22

java:线上问题排查常用手段的相关文章

排查Java线上服务故障的方法和实例分析

前言 作为在线系统负责人或者是一个技术专家,你可能刚刚接手一个项目就需要处理紧急故障,或者被要求帮忙处理一些紧急的故障,这个时候的情景是: (1)你可能对这个业务仅仅是听说过,而不怎么真正了解: (2)你可能没有这个故障的详细信息,比如可能仅仅是有使用方反馈服务中断了10分钟: (3)你对代码细节还没有仔细研究过. 这个时候该怎么解决问题呢?根据以前的经验,工程师们常常倾向于直接登上服务器检查代码,试图立刻修改问题.或者是把某些可能是问题的配置做修改,但并不是100%确认这就是问题的根本原因.但

线上Java应用排查和诊断规范

线上Java应用排查和诊断规范 http://www.iteye.com/topic/1132132 标准做法一:OOM触发HeadpDump 目的: OOM发生时,输出堆栈快照文件,供研发人员分析. 在JVM中,如果98%的时间是用于 GC 且可用的 Heap size 不足2%的时候,将抛出 OOM 异常. 配置操作: Resin/Tomcat 配置文件里追加 -XX:+HeapDumpOnOutOfMemoryError ,当 OutOfMemoryException 错误发生时,会自动生

Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令

上一篇文章<Java服务化系统线上应急和技术攻关,你必须拥有的那些应用层脚本和Java虚拟机命令>介绍了笔者在互联网公司里线上应急和技术攻关过程中积累的应用层脚本和Java虚拟机命令,这些脚本和命令在发现问题和定位问题的过程中起到关键作用,然而,经常会遇到一些深层次的问题,仅仅通过应用层和JVM虚拟机层的信息无法定位问题和解决问题,这时需要深入研究系统级的各种参数和信息,才能确定问题的根源原因,例如:网络超时.机器负载过高.JVM OOM.JVM和内核Bug等,这篇文章介绍那些重要的Linux

一则线上MySql连接异常的排查过程

Mysql作为一个常用数据库,在互联网系统应用很多.有些故障是其自身的bug,有些则不是,这里以前段时间遇到的问题举例. 问题 当时遇到的症状是这样的,我们的应用在线上测试环境,JMeter测试过程中,发现每次压力测试开始时访问低前几个http request请求会超时,而之后的请求持续测试中都不会.最后一点是Tomcat的log并没有报什么错误. 压测的内容就是起200线程不停的向这个http页面发送请求,这个页面逻辑也比较简单,会在后端向数据库插入一条数据,连接池采用阿里的Druid(这个坑

线上性能问题初步排查方法

本文首发于并发网,作者:方腾飞 引言 有时候有很多问题只有在线上或者预发环境才能发现,而线上又不能Debug,所以线上问题定位就只能看日志,系统状态和Dump线程,本文只是简单的介绍一些常用的工具,帮助定位线上问题. 问题定位 1: 首先使用TOP命令查看每个进程的情况,显示如下: top - 22:27:25 up 463 days, 12:46, 1 user, load average: 11.80, 12.19, 11.79 Tasks: 113 total, 5 running, 10

线上PHP问题排查思路与实践

前言 前几天,在一淘网,腾讯网媒和微博商业技术联合组织的技术分享大会上,我分享了<在线PHP问题排查思路与实践>.此博文除了对PPT提供下载外,还会对ppt做简单的注释说明.主题分为三部分,常见问题,解决思路和案例分析. 常见问题 不同用户看到的错误可能不一样.一般用户看到的错误都是表层的现象.如,裸奔的错误页面: <img src="http://www.bo56.com/wp-content/uploads/2015/09/luoben.png" alt=&quo

开启PHP的error_log排查线上遇到的错误

做开发的经常碰到这种情况,在线下测试的挺好的程序,上传到线上(生产环境)就会出现奇奇怪怪的错误,比如出现个空白页面,也不知道是哪里出问题了,而线上又不允许调试,那该如何去解决这个问题呢?除了在仔细一遍遍的检查代码外,还可以通过开启php的error_log来排查错误. 大家应该都知道当php.ini中的display_errors设置为on的时候,运行程序的时候经常会看到满屏的notice warning啊什么的. 开启error_log的情况下也会记录这些notice warning信息,但是

一次线上OOM故障排查经过

转贴:http://my.oschina.net/flashsword/blog/205266   本文是一次线上OOM故障排查的经过,内容比较基础但是真实,主要是记录一下,没有OOM排查经验的同学也可以参考. 现象 我们之前有一个计算作业.最近经常出现不稳定,无法正常响应的情况.具体表现是:各种连接超时,从mysql.mongodb和zookeeper到netty,能超时的都超时过了.其他看不到太多有效的异常. 所以我们首先怀疑的是网络问题,打电话跟运维确认,运维说网络问题的可能性几乎为0,因

反驳SEO是一种廉价的线上推广手段

如果问那些选择SEO推广站点的企业为什么选择SEO?我想十有八九会说因为SEO廉价.的确从表面看来,SEO不用像PPC付出如同无底洞的资金投入.然而实际情况是否SEO就是一中物美价廉的推广方式呢?笔者认为不然,因为SEO并非我们表面所看到的只要发发内容.发发外链,其依然隐藏着隐性的成本. 一:不确定因素成为SEO最大的隐性成本支出 SEO并不是一中一劳永逸的推广方式,其严重的依赖于搜索引擎,只要搜索引擎算法已更新,而如果我们的企业站点刚好不行中枪,那么企业借由站点的收入将会基本归零.更可怕的是搜