【问题标题】:Script use Heap Memory of JVM or System Memory脚本使用 JVM 的堆内存或系统内存
【发布时间】:2012-12-17 13:31:14
【问题描述】:

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

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

【问题讨论】:

  • 请看我更新的答案。

标签: garbage-collection jvm


【解决方案1】:

将使用系统内存

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

一般来说,当你执行一个进程时,你必须先fork()exec()。分叉通过复制当前进程来创建一个子进程。然后,您调用exec() 将“进程映像”更改为新的“进程映像”,实质上是在子进程中执行不同的代码。这就是您创建新进程以执行其他程序/脚本的方式。

见:

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

【讨论】:

    猜你喜欢
    • 2017-02-08
    • 2013-04-22
    • 2011-10-10
    • 2012-08-10
    • 2017-04-09
    • 2011-06-21
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多