ada*_*ine 5 java tomcat classpath permgen classloader
我的理解是PermGen(在某种意义上)将类代码保存在内存中.通常我们有很多jar文件引用了我们的类路径.当一个jar文件包含在类路径中时(例如在tomcat的lib目录中),所有这些jar的所有类都自动加载到PermGen中吗?
在类似的问题中,一旦使用了一个jar文件类,PermGen是否会加载该jar文件中的所有类,或者仅加载所使用的类(然后在必要时加载其余的类文件)?
这在某种程度上取决于类加载器和 JVM 的实现 - Java 虚拟机规范是这样说的:
该规范允许在链接活动(以及由于递归、加载)发生时实现灵活性,前提是尊重 Java 编程语言的语义,[...]
例如,实现可以选择仅在使用时单独解析类或接口中的每个符号引用(延迟解析或延迟解析),或者在验证类时一次性解析所有符号引用(静态解析)。这意味着在某些实现中,在初始化类或接口之后,解析过程可以继续。
实际上,任何理智的实现都不应仅仅因为文件中的一个类被加载而自动加载 JAR 文件中的所有内容,更不用说仅仅因为它位于类路径上。
| 归档时间: |
|
| 查看次数: |
1099 次 |
| 最近记录: |