У меня есть кодовая база, и некоторые методы никогда не используются. Удаляет ли javac
неиспользуемые методы из файла класса?
Удаляет ли javac методы, на которые нет ссылок в коде?
- Нет, если методы
public
, я должен надеяться. 08.03.2012 - @larsmans: Почему это особенное для
public
? Это потому, что их может использовать какой-то другой код? Можете ли вы уточнить? 08.03.2012
Ответы:
Q: Я хочу знать, есть ли у меня кодовая база и некоторые методы никогда не используются. Удаляет ли javac неиспользуемые методы из файла класса?
О: Нет. Что входит в класс, остается в файле класса.
... Однако ...
JVM загружает в память только то, что необходимо. Оперативная память не «тратится» на неиспользуемые классы.
Нет, это не так. Чтобы убедиться в этом, вы можете запустить
javap -c foo.bar.MyClass
и увидеть весь код там. Вы также можете получить к нему доступ через отражение (при условии, что вы работаете с соответствующими разрешениями).
Нет не бывает и не может. Подумайте о том, что произойдет, если компилятор сделает это при компиляции библиотеки. Все методы, которые библиотека хочет экспортировать для пользователей, но не использует сама, будут удалены. И в Java нет способа отличить что-то, что является библиотекой, от вашего кода.