2016-10-08 4 views
1

Мой вопрос может быть тривиальным, но после некоторых исследований я все еще не удовлетворен полученными ответами. Мой вопрос в том, что использование стороннего класса будет более эффективным, чем использование базовых классов Java или java-библиотек.Эффективность загрузчика класса Java

насколько я знаю порядок загрузчиков классов в Java, который будет вызван

  • класс System погрузчик
  • класс Удлинитель погрузчик
  • загрузчик класса Bootstrap

не так ли более эффективно использовать стороннюю банку (которая будет загружаться загрузчиком System class) вместо использования встроенных файлов классов, например, предположим, что у меня есть огромная система, которая требует сортировки много раз, и позволяет предположить, алгоритм я планирую использовать, сортировка слиянием, поэтому, как правило, я бы идти с использованием

   Collections.sort() 

Но не было бы более эффективным, если я реализую это сам и использовал его, так что я могу получить его от первого класса загрузчика?

ответ

2

Первый загрузчик классов - встроенный загрузчик классов, поэтому нет необходимости писать свой класс Collections.

Классы загружаются только один раз, поэтому, когда они появились после загрузки, не имеет значения для производительности. Даже в первый раз маловероятно.

BTW Загрузчик класса System (ваш код) последний.

Даже если это не так, встроенные классы часто оптимизируются способами, которые не явны в коде Java, и вы не можете писать сами. то есть JVM просто заменяет некоторые методы с помощью собственного кода с ручной обработкой. (Called intrinsics)

+0

Хорошо, что имеет смысл, я зарегистрировался в курсе, и первое, что сказал инструктор, это загрузчик System class, который первым вызвал, который меня смутил, похоже, это не так. –

+0

«Классы загружаются только один раз», они обналичены? поэтому во время выполнения, если я удалю файл jar после того, как класс был загружен в первый раз, проблема не возникнет? –

+0

@AmerQarabsa, если никакой другой класс не нужен из JAR, да. –