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{

  • 相关阅读:
    3631: [JLOI2014]松鼠的新家
    1112: [POI2008]砖块Klo
    1935: [Shoi2007]Tree 园丁的烦恼
    4001: [TJOI2015]概率论
    1339 / 1163: [Baltic2008]Mafia
    4010: [HNOI2015]菜肴制作
    4052: [Cerc2013]Magical GCD
    2292: 【POJ Challenge 】永远挑战
    4063: [Cerc2012]Darts
    3997: [TJOI2015]组合数学
  • 原文地址:https://www.cnblogs.com/hhbk/p/8460846.html
Copyright © 2011-2022 走看看