zoukankan      html  css  js  c++  java
  • JVM-问题定位示例

    内存溢出定位与分析

    1. 模拟内存溢出,向集合中添加极大数量的字符串

    package com.example.testcpu;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.UUID;
    
    public class TestJvmOutOfMemory {
    
        public static void main(String[] args) {
            List<Object> list = new ArrayList<>();
            for (int i = 0; i < 10000000; i++) {
                String str = "";
                for (int j = 0; j < 1000; j++) {
                    str += UUID.randomUUID().toString();
                }
                list.add(str);
            }
            System.out.println("ok");
        }
    }

    2. 运行参数:

    -Xms8m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError

    结果:

    objc[78198]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/bin/java (0x103bf64c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x103c7a4e0). One of the two will be used. Which one is undefined.
    java.lang.OutOfMemoryError: Java heap space
    Dumping heap to java_pid78198.hprof ...
    Heap dump file created [7918632 bytes in 0.055 secs]
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Arrays.java:3332)
        at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137)
        at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121)
        at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:421)
        at java.lang.StringBuilder.append(StringBuilder.java:136)
        at com.example.testcpu.TestJvmOutOfMemory.main(TestJvmOutOfMemory.java:14)
    
    Process finished with exit code 1

    定位死锁问题

    将dump文件导入到MAT中分析

    发现服务器的CPU的负载突然增

    高了、出现了死锁、死循环等,我们该如何分析呢?

    1. 找到CPU占比高的进程

    2. jstack查看线程情况,如发生死锁,会在最下面显示

  • 相关阅读:
    WPF画辐射图
    WPF 获取表格里面的内容
    C# 动态生成Html地图文件
    C#如何关闭指定进程
    oracle EM 打不开 503 |OracleDBConsoleorcl 启动不了
    oracle windows 下修复无监听错误-12541/12514
    Oracle 命令汇总
    oracle 函数 bitand 与 decode
    一.Git 初步扫盲
    修改字段类型
  • 原文地址:https://www.cnblogs.com/yintingting/p/8893775.html
Copyright © 2011-2022 走看看