JAVA中StackOverflowError錯誤的解決
根據(jù)名字的意思可以大致知道它是跟函數(shù)棧有關(guān)的錯誤,就是函數(shù)棧調(diào)用太深了,可能是代碼中有了循環(huán)調(diào)用方法而無法退出的情況。而像while這樣的死循環(huán),不會報錯,程序會一直執(zhí)行下去,占用內(nèi)存。
原理StackOverflowError 是一個java中常出現(xiàn)的錯誤:在jvm運行時的數(shù)據(jù)區(qū)域中有一個java虛擬機棧,當(dāng)執(zhí)行java方法時會進(jìn)行壓棧彈棧的操作。在棧中會保存局部變量,操作數(shù)棧,方法出口等等。jvm規(guī)定了棧的最大深度,當(dāng)執(zhí)行時棧的深度大于了規(guī)定的深度,就會拋出StackOverflowError錯誤。
所以當(dāng)你在一個函數(shù)再調(diào)用此函數(shù)時,而忘記設(shè)置出口就會出現(xiàn)這個錯誤。
今天我遇到的問題就是我想覆寫hash函數(shù),想要在此函數(shù)調(diào)用的結(jié)果是原來的hash函數(shù)調(diào)用的結(jié)果再隨便加一個字符串,結(jié)果就忽視了函數(shù)會一直調(diào)用下去,相當(dāng)于沒有設(shè)置遞歸函數(shù)的出口,所以導(dǎo)致了StackOverflowError錯誤。
這是當(dāng)時我的代碼
發(fā)生的錯誤
當(dāng)我把函數(shù)名字改一改就能正常運行。還有原來的一些設(shè)置圖書和學(xué)生類時,這兩個類中都覆寫了toString方法,這兩個類也可以互相調(diào)用,當(dāng)最后調(diào)用tostring時也會發(fā)生錯誤。
下面是我在網(wǎng)上找的一段代碼
//book和student相互循環(huán)引用public class StackOverFlowDemo { static class Student{String name;Book book; public Student(String name) { this.name = name;}//循環(huán)調(diào)用toString方法@Overridepublic String toString() { return 'Student{' + 'name=’' + name + ’’’ + ', book=' + book + ’}’;} } static class Book {String isbn;Student student; public Book(String isbn, Student student) { this.isbn = isbn; this.student = student;} @Overridepublic String toString() { return 'Book{' + 'isbn=’' + isbn + ’’’ + ', student=' + student + ’}’;} } public static void main(String[] args) {Student student=new Student('zhang3');Book book=new Book('1111',student);student.book=book;System.out.println(book.toString()); } }
發(fā)生了如下錯誤
到此這篇關(guān)于JAVA中StackOverflowError錯誤的解決的文章就介紹到這了,更多相關(guān)JAVA StackOverflowError錯誤內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Spring security 自定義過濾器實現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實例代碼)2. docker /var/lib/docker/aufs/mnt 目錄清理方法3. JAMon(Java Application Monitor)備忘記4. Python OpenCV去除字母后面的雜線操作5. 在Mac中配置Python虛擬環(huán)境過程解析6. IntelliJ IDEA設(shè)置默認(rèn)瀏覽器的方法7. IntelliJ IDEA設(shè)置背景圖片的方法步驟8. Python TestSuite生成測試報告過程解析9. Python 的 __str__ 和 __repr__ 方法對比10. Java類加載機制實現(xiàn)步驟解析
