Rumah >Java >javaTutorial >Apakah empat situasi limpahan memori java?
1. Limpahan timbunan, Timbunan menyimpan objek instance, tetapi lambat laun kawasan timbunan akan penuh. Jika ingatan kawasan timbunan ditetapkan, pengecualian akan dilemparkan apabila dibuat.
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. Tindanan mesin maya dan limpahan tindanan kaedah setempat
Jika kedalaman tindanan yang diperlukan oleh benang lebih besar daripada kedalaman yang dibenarkan oleh kunci mesin maya, a Pengecualian StackOverflowError dilemparkan.
Jika mesin maya tidak dapat memohon ruang storan yang mencukupi semasa mengembangkan tindanan, pengecualian akan berlaku.
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. Kawasan kaedah dan limpahan kolam malar masa jalan
4 Limpahan memori langsung asli
Kapasiti DirectMemory Ia boleh. ditentukan oleh -XX:MaxDirectMemorySize Jika tidak dinyatakan, ia lalai kepada nilai yang sama seperti timbunan Java (dinyatakan oleh -Xmx).
Atas ialah kandungan terperinci Apakah empat situasi limpahan memori java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!