1.一段会导致OOM的代码

Java堆用于存储对象实例,我们只要不断地创建对象,并且保证GC Roots到对象之间可达性路径来避免垃圾回收机制清除这些对象,就会在对象数量达到最大堆容量限制后产生内存溢出异常

import java.util.ArrayList;

import java.util.List;publicclass OOMTest {public static void main(String[]args) {int i=0;

try {

String s="hello";

List list=new ArrayList();while(true){

list.add(s);

s=s+s;

i++;

}

}catch (Throwable e){

e.printStackTrace();

System.out.println(i);

}

}

}

2.排查过程

1. javac OOMTest.java

说明:编译出class文件

2. java -Xmx102m -Xms102m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=E:/memory.hprof OOMTest

说明:

-Xmx102m -Xms102m 设置堆内存最大值,最小值为102m

-XX:+HeapDumpOnOutOfMemoryError 就是当你发生OOM时导出你的堆快照信息

-XX:HeapDumpPath 设置导出的路径

3. jvisualvm

这个可以在你的命令行里敲也可以在你的Jdk包下找

打开我们的VisualVM

装入我们的hprof文件,就可以看到对应信息了

这里就可以看到我们的String占的比例很大

List中也全是String的数据,再个根据出错的行数,不难判断哪里出现了问题

总结:

1.dump出我们的堆的快照信息

2.利用JVisualVM来进行判断哪里出了问题

java判断oom_OOM排查相关推荐

  1. 判断字符串不包含某个字符php,java判断字符串是否包含某个字符的方法

    java判断字符串是否包含某个字符的方法: 一.contains方法 1:描述 java.lang.String.contains() 方法返回true,当且仅当此字符串包含指定的char值序列 2: ...

  2. java判断总共天数_Java判断两个日期相差天数的方法

    本文实例讲述了Java判断两个日期相差天数的方法.分享给大家供大家参考.具体如下: import java.util.Calendar; public class DateDifferent{ pub ...

  3. java 包含汉字,【转载】Java判断字符串中是不是包含汉字

    [转载]Java判断字符串中是否包含汉字 import java.util.regex.Matcher; import java.util.regex.Pattern; public class If ...

  4. java判断回文字符串几种简单的实现

    11年it研发经验,从一个会计转行为算法工程师,学过C#,c++,java,android,php,go,js,python,CNN神经网络,四千多篇博文,三千多篇原创,只为与你分享,共同成长,一起进 ...

  5. java - 判断 字符串是否为空

    java - 判断 字符串是否为空 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.1:if(s == null || s.equals(""));方法二: 比较字符 ...

  6. Java 判断字符串是否为空的四种方法、优缺点与注意事项

    以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...

  7. java判断括号是否闭合_用 java 判断 括号是否完全匹配

    用 java 判断 括号是否完全匹配: package emp; import java.util.Stack; public class Parentheses { public static vo ...

  8. java 判断 中文字符_java中判断字符串中是否有中文字符

    package com.meritit.test; public class TestChart { public static void main(String[] args) throws Exc ...

  9. Java判断一组数字是否是等差数列

    Java判断一组数字是否是等差数列 公式: 1.先排序 2.当前数=第一个数+相邻两数的差[公差]*当前位置 eg: 1,3,5 每个数字之间相差2,假如当前数是5,则与前面相差两个2, 因为如果是等 ...

最新文章

  1. 2021年大数据Spark(五):大环境搭建本地模式 Local
  2. ubuntu安装ssh,安装失败
  3. DataSnap 2009 系列之二 (方法篇)
  4. 用java实现Gaunt积分
  5. PHP随机输出视频API源码,php 32行代码简单实现抖音无水印视频api,附前台页面
  6. 【IT界的厨子】酱香鲈鱼
  7. win7 管理iphone日历_大师给你传授win7系统安装桌面日历的途径
  8. Redis 6 将采用全新协议 RESP3,以提供客户端缓存功能
  9. netcat运行出错
  10. 推荐使用maven生成mybatis代码
  11. 19 个接私活平台汇总,你有技术就有钱
  12. 解决Vscode提示code安装似乎损坏
  13. css定位(二)---css中粘性定位(sticky)---C3新增属性
  14. 无刷直流电动机矢量控制(一)——无刷直流电机(BLDC)与永磁同步电机(PMSM)的相同点和区别
  15. 常见运放电路分析仿真汇总
  16. Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False.
  17. html内边距居中,HTML中详述外边距样式属性(margin)与内边距样式属性(padding)...
  18. idc具体是啥 idc服务器是什么意思?
  19. 全球500强员工是这么考试的!还有答案~
  20. 零 距 离 感 悟 金 山

热门文章

  1. matlab 模糊关系的合成、模糊向量笛卡尔积和内积运算代码(自编)
  2. range python float_自定义支持 float 的 range 函数
  3. 汽车整车动力学模型思维导图
  4. vc 单文档程序和多文档程序有什么区别?
  5. 【Launcher3系列】Android 11 Launcher3 图标替换、定制图标大一圈调整
  6. 博客网站添加友情链接-SEO搜索引擎优化
  7. ES 搜索3 (查找多个精确值)
  8. css常用选择器:相邻兄弟选择器(+)、子选择器(>)、兄弟选择器(~)、属性选择器等用法
  9. 研究了100多个创业失败案例后,这里有7个血色教训
  10. 通过NSBT投票参与Neutrino治理