Gần đây tôi đã có một cuộc phỏng vấn và được yêu cầu thiết kế/triển khai chức năng stacktrace. Đây là những gì tôi đã đưa ra.Làm cách nào để triển khai theo dõi ngăn xếp khi có lỗi?
- Duy trì ngăn xếp chứa tất cả cuộc gọi phương thức từ điểm chính của lối vào chương trình.
- Nếu có lỗi tại bất kỳ thời điểm nào trong quá trình thực hiện, hãy tạm dừng chương trình và in toàn bộ ngăn xếp bằng cách bật mọi phần tử.
tôi sau đó đã hỏi hai câu hỏi:
- Làm thế nào/nơi sẽ ngăn xếp này được khởi tạo?
- Bạn sẽ quyết định số lượng dữ liệu mà ngăn xếp sẽ lưu trữ mà không cần chạy OOM? Tại sao JVM không bao giờ chạy nguyên nhân OOM của ngăn xếp?
Đối với câu hỏi đầu tiên tôi đã nói, ngăn xếp phải là tĩnh và phải được khởi chạy khi bắt đầu chương trình. Nhưng tôi không chắc về câu hỏi thứ hai. Tôi đã cố gắng để đọc như thế nào JVM làm điều này nhưng nó là một chút phức tạp. Tôi đã thử googling cho việc triển khai cơ bản nhưng không thể tìm thấy bất kỳ. Sẽ rất nhiều đánh giá cao nếu một người nào đó chỉ sẽ chỉ cho tôi đúng hướng như những gì chính xác tôi nên tìm kiếm để trả lời này.
bản sao có thể có của [Kích thước ngăn xếp mặc định Java] (http://stackoverflow.com/questions/20030120/java-default-stack-size) – ControlAltDel
Nhìn vào Throwables printStackTrace() – user489041
Xin lỗi đã bỏ phiếu để đóng nhưng tôi nhận ra hai câu hỏi không giống nhau. Bạn có thể tìm thấy nhiều thông tin về phân bổ stack với câu hỏi này: http://stackoverflow.com/questions/20030120/java-default-stack-size – ControlAltDel