Các tùy chọn biên dịch mặc định không bao gồm thông tin gỡ lỗi, bạn phải thông báo cụ thể trình biên dịch để bao gồm nó. Có một số lý do khiến hầu hết mọi người bỏ qua nó:
- Một số thư viện được sử dụng trong các hệ thống nhúng (như điện thoại di động). Cho đến gần đây, mỗi bit được tính. Ngày nay, hầu hết các điện thoại di động đi kèm với nhiều bộ nhớ hơn tất cả các máy tính trong năm 1985 đã cùng nhau;)
- Khi được biên dịch với gỡ lỗi hoạt động, mã chạy chậm hơn 5%. Không nhiều nhưng một lần nữa, trong một số trường hợp mỗi chu kỳ đếm.
- Nhà phát triển cao cấp của ngày hôm nay được sinh ra vào thời điểm 64KB RAM rất lớn. Hôm qua, tôi đã thêm một ổ đĩa 2TB khác vào máy chủ của tôi trong hầm. Đó là 7 đơn đặt hàng của cường độ trong 25 năm. Con người cần thêm thời gian để điều chỉnh.
[EDIT] Như John đã chỉ ra, Java bytecode không được tối ưu hóa (nhiều) nữa hôm nay. Vì vậy, đầu ra của các tệp lớp sẽ giống nhau cho cả hai trường hợp (chỉ tệp lớp có thông tin gỡ lỗi sẽ lớn hơn). Mã được tối ưu hóa trong JIT khi chạy, cho phép thời gian chạy tối ưu hóa mã cho CPU, bộ nhớ (số lượng và bố cục), v.v.
Hình phạt 5% được đề cập là khi bạn chạy mã và thêm dòng lệnh tùy chọn để cho phép trình gỡ lỗi từ xa đính kèm vào quy trình. Nếu bạn không bật gỡ lỗi từ xa, không có hình phạt (ngoại trừ việc tải lớp nhưng điều đó chỉ xảy ra một lần).
Nguồn
2009-12-09 09:00:37
Thường xuyên hơn không, bạn sẽ có thể tải xuống phiên bản chưa được tối ưu hóa/"có thể gỡ lỗi" của lib hoặc bạn có thể chỉ cần cắn viên đạn và kéo xuống src chính mình – Ian