2014-06-09 54 views
8

我对这个东西相当新,但实质上:有程序和过程。程序是执行时产生进程的文件。Java程序可以在没有其文件的情况下运行吗?

如果还有与其关联的进程,则无法删除程序。这个过程需要先被杀死。

这似乎也是Java程序的情况。不过,我很好奇为什么 - 不是将整个东西加载到JVM中?

+1

JVM不会在同一时刻加载所有东西,它会在需要时加载类。 –

+0

你能链接到你看到“程序”定义的地方吗?在* nix中,内核派生进程,然后处理派生进程(和线程)。 –

+1

这将是OS和JVM特定的。 –

回答

2

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

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

4

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

在Windows下可能有其他机制。

相关问题