Как я могу определить, использует ли JVM, на которой я работаю, несколько загрузчиков классов?

Думаю, мой вопрос понятен. Каким будет самый быстрый и точный метод определения того, что JVM, которую я использую, использует несколько загрузчиков классов? Если да, то какие меры необходимо принять для обеспечения корректной работы программ?

РЕДАКТИРОВАТЬ: я думаю, мне нужно было некоторое разъяснение того факта, что два загрузчика классов могут загружать один и тот же класс? В случае такого класса, как singleton, где требуется только один экземпляр, как мы можем предотвратить это?


person Phoenix    schedule 25.07.2012    source источник


Ответы (3)


Что нужно сделать, чтобы программы работали правильно?

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

person Andrew Thompson    schedule 25.07.2012

Я борюсь с вопросом.

Каждая JVM постоянно запускает несколько загрузчиков классов: системный загрузчик классов, загрузчик классов расширений и загрузчик классов приложений, по крайней мере. OSGi и т. д. могут добавить многое, многое другое.

Я изо всех сил пытаюсь увидеть здесь какие-либо проблемы - весь смысл загрузчиков классов заключается в изоляции пространств имен.

person Trent Gray-Donald    schedule 25.07.2012

Каждая JVM использует несколько загрузчиков классов.

java -XX:+TraceClassLoading -версия 2>&1 | вырезать -d'' -f2 | grep ClassLoader

отпечатки

java.lang.ClassLoader
sun.reflect.DelegatingClassLoader
java.lang.ClassLoader$3
java.lang.ClassLoader$NativeLibrary
java.security.SecureClassLoader
java.net.URLClassLoader
sun.misc.Launcher$ExtClassLoader
java.lang.ClassLoader$ParallelLoaders
java.net.URLClassLoader$7
sun.misc.Launcher$ExtClassLoader$1
sun.misc.Launcher$AppClassLoader
sun.misc.Launcher$AppClassLoader$1
java.lang.SystemClassLoaderAction

Некоторые из них являются внутренними классами, а некоторые расширяют друг друга, но здесь есть более одного ClassLoader, и все, что я сделал, это спросил версию JVM.

person Peter Lawrey    schedule 25.07.2012