Home >Java >javaTutorial >What situations can cause Java memory overflow?
1. Heap overflow, The heap stores instance objects, but sooner or later the heap area will be full. If the heap area memory is set, an exception will be thrown when created.
public class HeapOOM { static class User {} public static void main(String[] args) { List<User> list = new ArrayList<User>(); while (true) { list.add(new User()); } } } /*Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded at com.fdd.test.HeapOOM.main(HeapOOM.java:11)*/
2. Virtual machine stack and local method stack overflow
If the stack depth required by the thread is greater than the depth allowed by the virtual machine lock, a StackOverflowError exception is thrown.
If the virtual machine cannot apply for enough storage space when expanding the stack, an exception will occur.
public class StackOutOfMemoryError { public static void main(String[] args) { test(); } private static void go() { System.out.println("StackOverflowError异常"); test(); } } /*Exception in thread "main" java.lang.StackOverflowError at sun.nio.cs.ext.DoubleByte$Encoder.encodeLoop(DoubleByte.java:617) at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:579) at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:271) at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125) at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207) at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129) at java.io.PrintStream.write(PrintStream.java:526) at java.io.PrintStream.print(PrintStream.java:597) at java.io.PrintStream.println(PrintStream.java:736) at com.fdd.test.StackOutOfMemoryError.go(StackOutOfMemoryError.java:11) at com.fdd.test.StackOutOfMemoryError.go(StackOutOfMemoryError.java:13)*/
3. Method area and runtime constant pool overflow
4. Native direct memory overflow
DirectMemory capacity It can be specified by -XX:MaxDirectMemorySize. If not specified, the default is the same as the value of the Java heap (specified by -Xmx).
The above is the detailed content of What situations can cause Java memory overflow?. For more information, please follow other related articles on the PHP Chinese website!