java - java中的默认类加载器是将所有内容都保存在内存中还是留在文件系统中?

标签 java jar classloader dynamic-loading dynamic-class-loaders

我想知道当你有一个 jar,动态加载到你正在运行的程序中时,jar 中的所有内容(类、资源)是否都存储在 VM 内存中的某个地方?

这样每次您需要访问类或文本资源文件时(例如通过 getClass().getResourceAsStream),它都可以从内存中快速拉出而不是再次访问文件系统中的 jar?也就是说,您可以在那之后删除 jar。

抱歉,如果我问错了问题,请将我的问题改为解释类加载器过程,因为我可能误解了它,特别是对于 jar 中打包的资源。谢谢。

最佳答案

不,通常资源在您访问它们之前不会从磁盘加载。

类被加载到内存中,并在第一次使用后留在内存中。资源不会缓存在 JVM 或 JRE 级别 - 每次调用 getResourceAsStream 时,您都会从磁盘获得一个新流。

关于java - java中的默认类加载器是将所有内容都保存在内存中还是留在文件系统中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28573578/

相关文章:

java - Travis CI环境变量在maven测试中的使用

java - Android 模拟器无法访问互联网

Java专用IDE : Project files vs project zip/jar

java - 尝试使用图像资源时出现 NullPointerException

java - 如何在没有项目的情况下降级jar文件的版本?

java - 如何使 JPanel 可滚动?

java - 升级到 TomEE 1.7.1 后的类加载问题

classloader - JVM 中的类加载

java - 包含 Jar 的 Jar 中的类的替换系统类加载器

java - 在java中的循环中动态使用多个setMethods