企业网站建设应该怎么做,做百度收录的网站,经验范围 网站建设,电销系统软件文章目录 前言一、基础架构二、常见OOM1、栈内存溢出java.lang.StackOverflowError2、堆内存溢出java.lang.OutOfMemoryError#xff1a;Java heap space3、GC回收时间过长java.lang.OutOfMemoryError: GC overhead limit exceeded4、NIO程序堆外内存溢出java.lang.OutOfMemor… 文章目录 前言一、基础架构二、常见OOM1、栈内存溢出java.lang.StackOverflowError2、堆内存溢出java.lang.OutOfMemoryErrorJava heap space3、GC回收时间过长java.lang.OutOfMemoryError: GC overhead limit exceeded4、NIO程序堆外内存溢出java.lang.OutOfMemoryError: Direct buffer memory5、(重要)不能创建本地线程java.lang.OutOfMemoryError: unable to create native thread6、元空间溢出java.lang.OutOfMemoryError: Metaspace 前言
对OOM部分的认识予以记录
一、基础架构
Error与Exception
二、常见OOM 1、栈内存溢出java.lang.StackOverflowError
方法的递归调用
public class StackOverFlowErrorDemo {public static void main(String[] args) {stackOverFlowError();}private static void stackOverFlowError() {stackOverFlowError();}
}2、堆内存溢出java.lang.OutOfMemoryErrorJava heap space
new大对象
public class HeapSpaceDemo {public static void main(String[] args) {byte[] bytes new byte[30 * 1024 * 1024];}
}3、GC回收时间过长java.lang.OutOfMemoryError: GC overhead limit exceeded
超过98%的时间做GC而回收了不到2%的堆内存
public class GCOverheadDemo {public static void main(String[] args) {int i 0;ListString list new ArrayList();try {while (true) {list.add(String.valueOf(i).intern());}} catch (Throwable e) {System.out.println( i);e.printStackTrace();throw e;}}
}4、NIO程序堆外内存溢出java.lang.OutOfMemoryError: Direct buffer memory
netty nio
public class DirectBufferMemoryDemo {public static void main(String[] args) {System.out.println(配置的maxDirectoryMemory: (sun.misc.VM.maxDirectMemory() / (double)1024 / 1024) MB);ByteBuffer byteBuffer ByteBuffer.allocateDirect(6 * 1024 * 1024);}
}5、(重要)不能创建本地线程java.lang.OutOfMemoryError: unable to create native thread package com.kqli.oom;public class UnableCreateNewThreadDemo {public static void main(String[] args) {for (int i 0; ; i) {System.out.println( i);new Thread(() - {try {Thread.sleep(Integer.MAX_VALUE);} catch (InterruptedException e) {throw new RuntimeException(e);}}, Thread- i).start();}}
}将java文件复制到ubuntu中执行以下命令
javac -d . UnableCreateNewThreadDemo.javajava com.kqli.oom.UnableCreateNewThreadDemo6、元空间溢出java.lang.OutOfMemoryError: Metaspace