我很难写出这个问题的标题,但这是我的情况和我的要求:
我想我的问题的根源是:应用程序加载并运行后是否需要.class文件?这些类是否只存储在内存中,而我不需要上面的文件文件系统了吗?或者它仍然可以访问/读取文件系统上的内容吗?
对于正在运行的应用程序所需的java有任何见解或更好的理解。
答案 0 :(得分:6)
按需加载类。在引用该类之前,类加载器不会尝试加载类。因此,在运行过程中从类路径中删除类文件几乎肯定会导致失败。
答案 1 :(得分:3)
如果您在测试运行时没有编译从Git到同一位置的.java文件,那么.class文件就不会有问题 - 无论IDE如何加载类
答案 2 :(得分:0)
在标准(我的意思是sun / oracle)JVM中加载一个类后,它会一直保留在内存中,直到jvm关闭,但由于类是按需加载的,所以它可能还没有加载。
答案 3 :(得分:0)
如果所有文件都已加载到内存中,则不需要...但是如何确保所有类都已加载到内存中...所以你需要类路径中的类文件
答案 4 :(得分:0)
我认为你必须向后退一步并重新考虑解决方案。
您写道,您执行集成测试。作为测试的一部分,您正在切换测试的源。如果你这样做,你将产生无用的测试数据,因为你无法确定,真正执行的是什么。
如果您想测试软件的两个不同的版本/分支,只需启用两个测试运行并比较结果。
如果您已经使用过,那么只能确定加载了* .class文件。在对类文件进行操作后,它将保留在JVM的内存中。如果它在一段时间内未使用并且GEM空间变低(但我不这么认为),它可能会被卸载。