脚本使用JVM或系统内存的堆内存

时间:2012-12-17 13:31:15

标签: garbage-collection jvm

对于某些背景, 据我所知,当我们启动一个java应用程序时,JVM为应用程序分配一个Heap空间和一个堆栈。该堆用于存储应用程序创建的所有对象。

我的问题是,如果我从我的java代码中调用Shell脚本,脚本使用的内存将从JVM堆空间分配,或者将使用系统内存空间。

1 个答案:

答案 0 :(得分:1)

将使用系统内存

Java将调用fork() 系统调用,该调用将复制父内存(当前正在使用的JVM内存)以便能够运行子项(您尝试运行的命令) 。

通常,在执行流程时,您必须先fork(),然后exec()。 Forking通过复制当前进程来创建子进程。然后,调用exec()将“过程映像”更改为新的“过程映像”,基本上在子进程中执行不同的代码。这是您创建新进程以执行其他程序/脚本的方法。

请参阅:

  1. Forking the JVM
  2. Shell processes from Java and the infamous OutOfMemory