从java应用程序内部启动外部进程-内存考虑

从java应用程序内部启动外部进程-内存考虑,java,jvm,Java,Jvm,很久以前,由于JVM/OS为新进程分配的内存量与JVM可用的内存量相同,所以从Java生成外部进程时出现了一个问题(我认为只影响Java on*nix操作系统) 所以,如果您有一个启动相对较小进程的“大”Java应用程序,您可能会遇到内存问题,因为无法启动进程,因为没有足够的内存来创建这个新进程 我试图确认这个问题是否在最近版本的Java7/8中得到了解决 我发现了这个标记为已解决的错误报告:-有人能确认这个问题是否已经解决,并且从JVM内启动外部进程现在被认为是“安全的”是的,问题在7u60和

很久以前,由于JVM/OS为新进程分配的内存量与JVM可用的内存量相同,所以从Java生成外部进程时出现了一个问题(我认为只影响Java on*nix操作系统)

所以,如果您有一个启动相对较小进程的“大”Java应用程序,您可能会遇到内存问题,因为无法启动进程,因为没有足够的内存来创建这个新进程

我试图确认这个问题是否在最近版本的Java7/8中得到了解决


我发现了这个标记为已解决的错误报告:-有人能确认这个问题是否已经解决,并且从JVM内启动外部进程现在被认为是“安全的”

是的,问题在7u60和8中得到了解决。 bug()的受影响版本确认linux、solaris9和solaris10

但从bug来看,现在还不清楚从JVM内部启动外部进程是否被认为是“安全的”? 其中一个来自马克的评价建议

“在Runtime.exec现有语义的约束范围内,确实存在 在当前的Solaris版本中似乎无法避免这种情况。vWork(2) 不是线程安全的,popen(3C)只提供对孩子的一个 标准流,而不是所有三个流。S10支持新的
posix_spawn call;当在S10上运行时,我们应该考虑使用它“

在评估部分中,据说只有Solaris受此影响,Linux被明确提到为未受影响。internet上有一些页面表明Linux也受到影响(至少是某些版本):所以我想确保。。。