昨天晚上寫代碼的時候碰到一個bug,當時傻乎乎的調好久,請教老師,老師一眼就看出來了。
報錯:Exception in thread "main" java.lang.StackOverflowError
我這里寫了一個小代碼來實現了這個錯誤 如下:
第一個類 dome01:
package test; public class dome01 { dome02 dome02 = new dome02(); public void name() { dome02.name(); System.out.println("這是一個錯誤!"); } public static void main(String[] args) { dome01 dome01 = new dome01(); dome01.name(); } }
第二個類dome02
package test; public class dome02 { dome01 dome01 = new dome01(); public void name() { dome01.name(); System.out.println("內存泄漏導致的錯誤"); } }
控制台運行報錯:
相信很快就能發現,dome01中 new了一個 dome02, dome02中又new了一個dome01,在進入程序中 兩個對象反復調用
造成了死循環,直到棧溢出,簡單說就是內存泄漏了
解決方法:
避免兩個方法之間的反復調用,以免出現內存的泄漏