Это может повлиять на это немного, но компилятор JIT должен иметь возможность обнаруживать и исключать методы, которые никогда не используются. И даже если это не так, накладные расходы (память, время загрузки, время компиляции JIT и т. Д.), Вероятно, будут небольшими.
Лучшей причиной для устранения мертвых методов является избавление от «старого материала», что делает вашу кодовую базу сложнее читать, тестировать, поддерживать. Если это код, который вам может понадобиться снова, вы всегда можете вернуть его из управления версиями.
Что делать, если спросить у пользователя, какой метод вы хотите позвонить? , возьмите ввод как String, а затем вызовите этот метод, используя отражение ?. JIT не может сказать, какой метод будет использоваться, поэтому он не может удалить какие-либо методы :).
Хорошая точка. Поэтому на практике это, вероятно, не устранит. (Но это могло бы ... если classloader знал, где перезагрузить метод из ...)
Мертвые методы увеличивают площадь метода в JVM.
Да, хотя процентное увеличение памяти, вероятно, невелико. И, следовательно, снижение производительности, вероятно, еще менее значимо.
Также метод, который никогда не вызывается, никогда не будет скомпилирован JIT, поэтому вы, вероятно, не будете использовать 50% или более использования памяти для обычного метода live.
Так слишком много мертвого кода может привести к выгрузке классов из области метода (кучи), которая может повлиять на производительность приложения. я прав?.
Это маловероятно. Класс будет выгружен только в том случае, если ничто не ссылается на него и его загрузчик классов также недоступен. И если это произойдет, класс не будет использоваться снова в любом случае, поэтому его можно разгрузить.
Если вы делаете какое-либо отражение, это может замедлить это. – Pace
Вопросительным вопросом было бы следующее: делать неосновательные методы, приводящие к неуместным импортам –
Короткий ответ, да. Но производительность - это совершенно другое животное, которое нужно атаковать по-другому. – Siddharth