zoukankan      html  css  js  c++  java
  • JAVA-内存及CPU排查

    1.现象
    CPU利用率高.
    应用缓慢或无法对外提供服务.
    2.原因
    1.死循环
    2.JVM堆占用过大-高频率FULL-GC
    3.排查方法
    1.使用top命令找出CPU消耗最大的进程
    2.使用top -Hp 进程(上一步得到的进程号),找出消耗CPU的线程.
    3.使用[jstack 进程与jstat -gcutil 进程 1000 100],找出线程在执行何种操作..
    如果线程非GC线程,则直接可以根据调用堆栈找出具体的代码...
    否则进行如下操作.
    1.jstat -gcutil pid 1000 100用此命令跟踪GC回收...
    4.jmap -dump:format=b,file=memoryfile.bin 【pid】
    5.sz memoryfile.bin
    6.使用mat打开memoryfile.bin文件.然后分析内存.找出内存问题解决..
    4.实战
     
     
     
     
     
     
     
    5.线上实例
     
     
     
     
     
     
     
     
    六.例子源码
     
    import java.util.LinkedList;
    import java.util.List;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    public class TestMemory{
    //private static byte[] byteArray=new byte[1024*1024*170];
    private static List<Object> linkList=new LinkedList<Object>();
    private static long count=1024*1024*240/56;
    //private static List<Object> list=new CopyOnWriteArrayList<Object>();
    public static void main(String[] args) throws Throwable{
    for(int index=0;index<count;++index){
    linkList.add(new Object ());
    }
    ExecutorService service= Executors.newFixedThreadPool(5);
    for (int index=0;index<5;++index) {
    service.submit(new Runnable() {
    public void run() {
    while (true) {
    try {
    Thread.sleep(100);
    test();
    } catch (Throwable throwable) {
    throwable.printStackTrace();
    }
    }
    }
    });
    }
    System.in.read();
    }
    private static void test(){
    byte[] bytes=new byte[1024*1024];
    System.out.printf(bytes.toString());
    }
    }
     
     
     
    public class TestProfile {
    private Map<TestHashCode,Object> map=new HashMap<TestHashCode,Object>();
    private static Object obj=new Object();
    public static void main(String[] args) throws Throwable {
    new TestProfile().test1();
    }
     
    public void test1() throws Throwable{

  • 相关阅读:
    更改数据库sa密码
    单例模式实现 (Singleton)
    linux特殊符号大全
    “增强现实与多媒体”博客园开张了
    关于.NET运行多个版本
    DevExpress V7.2.3源码 Salesman or Opium Up to you
    there is no bool datatype in oralce datatype system
    .NET时代,还有多少人读库源码 求FCL源码
    当学术界在解决其理论问题,工程界形成形成了一个已开发者为核心的生态链
    Div css 管理后台 简易Demo
  • 原文地址:https://www.cnblogs.com/hhbk/p/8460846.html
Copyright © 2011-2022 走看看