2012-03-07 22 views
9

Tôi có một cơ sở mã và một số phương pháp không bao giờ được sử dụng. Có javac xóa các phương thức không được sử dụng khỏi tệp lớp học không?Javac có xóa các phương thức không được tham chiếu trong mã không?

+1

Không nếu phương pháp là 'công khai', tôi nên hy vọng. –

+0

@larsmans: Tại sao nó đặc biệt cho 'công khai'? Có phải vì một số mã khác có thể đang sử dụng chúng không? Bạn có thể xây dựng? – noMAD

Trả lời

6

Q: Tôi muốn biết nếu tôi có cơ sở mã và một số phương pháp không bao giờ được sử dụng. Có javac loại bỏ các phương pháp không sử dụng từ các tập tin lớp học?

A: Không. Điều gì xảy ra với lớp học, vẫn nằm trong tệp lớp học.

... tuy nhiên ...

JVM chỉ tải những gì cần thiết vào bộ nhớ. RAM không phải là "lãng phí" trên các lớp không sử dụng.

4

Không, không. Để xác minh điều này, bạn có thể chạy

javap -c foo.bar.MyClass 

và xem tất cả mã ở đó. Bạn cũng có thể truy cập nó thông qua sự phản chiếu (giả sử bạn đang chạy với các điều khoản thích hợp).

3

Không, không và không thể. Hãy suy nghĩ về những gì sẽ xảy ra nếu trình biên dịch đã làm điều đó khi bạn biên dịch một thư viện. Tất cả các phương thức mà thư viện muốn xuất hiện là xuất cho người dùng nhưng không sử dụng chính nó sẽ bị xóa. Và không có cách nào trong Java để phân biệt giữa thứ gì đó là thư viện và mã của bạn.

Các vấn đề liên quan