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

Does the default classloader in java keep everything in memory or leave in file system?

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

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

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

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

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