2

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

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

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

4

1 回答 1

5

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

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

于 2015-02-18T00:05:23.867 回答