我想知道当你有一个 jar,动态加载到你正在运行的程序中时,jar 中的所有内容(类、资源)是否都存储在 VM 内存中的某个地方?
这样每次您需要访问类或文本资源文件时(例如通过 getClass().getResourceAsStream),它都可以从内存中快速拉出而不是再次访问文件系统中的 jar?也就是说,您可以在那之后删除 jar。
抱歉,如果我问错了问题,请将我的问题改为解释类加载器过程,因为我可能误解了它,特别是对于 jar 中打包的资源。谢谢。
最佳答案
不,通常资源在您访问它们之前不会从磁盘加载。
类被加载到内存中,并在第一次使用后留在内存中。资源不会缓存在 JVM 或 JRE 级别 - 每次调用 getResourceAsStream
时,您都会从磁盘获得一个新流。
关于java - java中的默认类加载器是将所有内容都保存在内存中还是留在文件系统中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28573578/