手動寫java記憶體溢位 java.lang.StackOverflowError

hcmony發表於2018-09-04
package com.hcmony.test.memory;

/**
 * <h3>Shenjue.java基本描述</h3>
 * <p>
 *     java.lang.StackOverflowError
 *     【原因】:這也記憶體溢位錯誤的一種,即執行緒棧的溢位,要麼是方法呼叫層次過多(比如存在無限遞迴呼叫),要麼是執行緒棧太小。
 *     【解決】:優化程式設計,減少方法呼叫層次;調整-Xss引數增加執行緒棧大小。
 *  </p>
 *
 * @author hcmony
 * @since V1.0.0, 2018/09/04 15:00
 */
public class StackOverflowError {

	int depth = 0;

	public void sofMethod(){
		depth ++ ;
		sofMethod();
	}

	public static void main(String[] args) {
		StackOverflowError error = null;
		error = new StackOverflowError();
		error.sofMethod();
	}
}

結果如下:

Connected to the target VM, address: '127.0.0.1:65405', transport: 'socket'
Exception in thread "main" java.lang.StackOverflowError
	at com.hcmony.test.memory.StackOverflowError.sofMethod(StackOverflowError.java:20)
	at com.hcmony.test.memory.StackOverflowError.sofMethod(StackOverflowError.java:20)

 

相關文章