1

我认为我的问题是不言自明的。确定我使用的 JVM 正在使用多个类加载器的最快和最准确的方法是什么?如果是这样,必须采取什么措施来确保程序正确运行?

编辑:我想我需要澄清一下两个类加载器,它们可以加载同一个类吗?如果像单例这样只需要一个实例的类,我们如何防止它发生?

4

3 回答 3

2

必须注意哪些事项才能确保程序正确运行?

对于课程,我不知道。对于其他应用程序资源(图像、帮助文件等),请使用上下文类加载器。

于 2012-07-25T02:00:43.477 回答
1

每个 JVM 都使用多个类加载器。

java -XX:+TraceClassLoading -version 2>&1 | 剪切-d''-f2 | grep 类加载器

印刷

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 的版本。

于 2012-07-25T07:22:42.403 回答
1

我正在努力解决这个问题。

每个 JVM 一直在运行多个类加载器:至少是系统类加载器、扩展类加载器和应用程序类加载器。OSGi等。可以添加很多很多。

我很难在这里看到任何问题 - 类加载器的全部意义在于隔离命名空间。

于 2012-07-25T05:48:09.580 回答