当前位置: 首页 > 科技观察

一文学习核心服务OOM!

时间:2023-03-14 22:44:17 科技观察

P0事故被安排。我以为内存溢出只会发生在书本上。没想到我们的生产环境也发生了,而且是618,安排了P0事故。先回顾内存溢出排查的基本思路,再回顾内存溢出的原因。内存溢出排查我们先来了解一下Java堆的组成。对于大多数应用来说,Java堆(JavaHeap)是Java虚拟机锁管理的最大的一块内存。Java堆是所有线程共享的内存区域,在虚拟机启动时创建。该内存区域的唯一目的是存储对象实例。几乎所有的对象实例都在这里分配内存。“堆的结构如下。”“新生代和老年代的具体划分比例如下。”内存”内存泄漏和内存溢出是两个不同的概念内存泄漏:对象不再使用,但仍然占用内存空间,还没有被释放内存溢出:堆空间不够用,通常表现为OutOfMemoryError,内存泄漏通常由内存溢出使用JavaVisualVM分析排查《我们可以使用jdk自带的jvisualvm命令来分析堆使用情况》我们写一个程序来演示增加内存的场景publicclassOomDemo{privatestaticfinalintNUM=1024;publicstaticvoidmain(String[]args)throwsInterruptedException{Listlist=Lists.newArrayList();for(inti=0;i