Giả sử chúng ta có các lớp sau:Hầu hết các JVM có cấp phát bộ nhớ cho các phương thức không sử dụng không?
class DoubleOhSeven {
public static void doSomethingClassy();
public static void neverDoThisClassy();
}
class Dude {
public void doSomething();
public void neverDoThis();
}
public class Party {
public static void main(String[] args){
DoubleOhSeven.doSomething();
Dude guy = new Dude;
guy.doSomething();
}
}
Tất nhiên, tất cả các phương pháp này sẽ được biên dịch vào tương ứng của họ .class
: làm tĩnh/phương pháp dụ không sử dụng chiếm bộ nhớ vào thời gian chạy? Điều gì về các phương pháp được thừa kế hoặc không được sử dụng?
Bạn có nghĩa là các cuộc gọi phản chiếu từ một số lớp khác? – fny
@faraz Hoặc chính lớp đó - vì các cuộc gọi phương thức phản xạ, theo định nghĩa, được quyết định trong thời gian chạy và không biên dịch thời gian, trình biên dịch không có cách nào biết được phương thức phản xạ nào sẽ được gọi hoặc khi nào. – berry120