Đi đến nội dung
Ngoại lệ JavaNghiêm trọng
StackOverflowError

StackOverflowError

Call stack đã vượt quá kích thước tối đa, thường do đệ quy sâu hoặc vô hạn.

jvmandroid

Nguyên nhân gây ra lỗi này

Một phương thức gọi đệ quy chính nó mà không có base case đúng, hoặc đệ quy lẫn nhau giữa các phương thức tạo ra vòng lặp vô hạn. Mỗi lần gọi phương thức tiêu thụ stack space cho đến khi đạt giới hạn.

Cách sửa

Thêm hoặc sửa base case trong phương thức đệ quy. Chuyển đệ quy thành vòng lặp. Tăng kích thước stack bằng flag JVM -Xss. Kiểm tra đệ quy vô hạn không chủ ý trong constructor hoặc phương thức toString.

Ví dụ

void recurse() { recurse(); }
Tài liệu chính thức

Mã lỗi liên quan