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{

  • 相关阅读:
    Micorosoft 2013年笔试题
    Dropbox推荐使用
    swift_枚举 | 可为空类型 | 枚举关联值 | 枚举递归 | 树的概念
    swift_简单值 | 元祖 | 流程控制 | 字符串 | 集合
    Swift函数的定义
    swift_Dictionary 字典
    Xcode创建Object-C程序
    Spring事务管理者与Spring事务注解--声明式事务
    JDK注解替代Hibernate的Entity映射
    关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
  • 原文地址:https://www.cnblogs.com/hhbk/p/8460846.html
Copyright © 2011-2022 走看看