1. 程式人生 > 實用技巧 >火影推薦程式連載73-記一次使用策略模式優化程式碼的經歷

火影推薦程式連載73-記一次使用策略模式優化程式碼的經歷

package JVM;

import java.util.ArrayList;
import java.util.List;

public class test1 {
    static class OOMObject{}
    
    public static void main(String[] args) {
        List<OOMObject> list = new ArrayList<OOMObject>();
        
        while(true) {
            list.add(new OOMObject());
        }
    }
}
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid17800.hprof ...
Heap dump file created [13098631 bytes in 0.028 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Unknown Source)
	at java.util.Arrays.copyOf(Unknown Source)
	at java.util.ArrayList.grow(Unknown Source)
	at java.util.ArrayList.ensureExplicitCapacity(Unknown Source)
	at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
	at java.util.ArrayList.add(Unknown Source)
	at JVM.test1.main(test1.java:13)

  

package JVM;

import java.util.ArrayList;
import java.util.List;
/*
 * VM Args: -Xss128k
 */

public class test1 {
    private int stackLength = 1;
    
    public void stackLeak() {
        stackLength++;
        stackLeak();
    }
    
    
    public static void main(String[] args) {
        test1 oom 
= new test1(); try { oom.stackLeak(); }catch(Throwable e) { System.out.println("stack length:" + oom.stackLength); throw e; } } }
stack length:990
Exception in thread "main" java.lang.StackOverflowError
	at JVM.test1.stackLeak(test1.java:13)
	at JVM.test1.stackLeak(test1.java:14)
	at JVM.test1.stackLeak(test1.java:14)
	at JVM.test1.stackLeak(test1.java:14)
	at JVM.test1.stackLeak(test1.java:14)
	at JVM.test1.stackLeak(test1.java:14)
        ...