Java程序可以在没有文件的情况下运行吗?

时间:2014-06-09 22:51:34

标签: java

我在这方面相当新,但基本上是:有程序和流程。程序是一个在执行时产生进程的文件。

如果仍有与之关联的流程,则无法删除该程序。这个过程需要先被杀死。

这似乎也适用于Java程序。但是我很好奇为什么 - 不管怎么说整个东西都加载到JVM中?

2 个答案:

答案 0 :(得分:4)

“删除文件”涉及som OS语义。在Unix / Linux下,可能会删除文件,并且所有打开的文件句柄都保持有效。当最后打开的文件句柄消失时,已删除文件占用的空间将返回到可用空间池。

在Windows下可能还有其他机制。

答案 1 :(得分:2)

JVM作为即时(JIT)编译器。关于JIT编译有很多信息来源,但基本上当java程序正在运行时,它会遇到所需的部分程序程序的这些部分都在.class个文件。这些.class文件只是Java代码的中间形式(它不是Java代码,但还不是机器代码)。显然,在运行时编译(JIT)需要资源(CPU周期),因此需要时间。因此,JVM只加载所需的程序部分,以最大限度地减少浪费的CPU周期。

但是,您对过程/程序的理解是正确的。总结:进程是程序的运行实例。这个正在运行的程序,然后可以产生更多的进程或线程来执行工作。