2016-03-24 26 views
-2

我有一个由Java进程启动的Perl脚本。当进程达到30MB时,它会永久停留。我注意到,小于27MB的脚本成功完成。Perl进程达到30MB并卡住

我的Java -Xmx-Xms是1500MB

的操作系统是Windows Server 2008 R2的64位与4G内存。

我使用的ActivePerl 5.18.4

是否有Perl的进程的内存限制?

+0

请使用* markdown *格式化您的问题。它会帮助你阅读[*如何使用Markdown或HTML格式化我的文章*](http://stackoverflow.com/help/formatting) – Borodin

+1

您的perl可执行文件是否构建为64位寻址?如果你不确定,请检查'perl -MConfig -E'say $ Config {ptrsize} * 8''的输出 – Borodin

+0

我在脚本中发现了问题。无论哪种方式,我不知道为什么这里的用户减少了我的问题...... :( – Snow

回答

4

不,Perl不限制程序可以分配多少内存。 (32位进程具有2GB到3GB的可寻址内存),并且系统可以施加进一步的限制(例如使用ulimit),但这不是问题,因为Perl在内存不足时会死掉。

您的程序被阻塞的原因与当时使用的内存量无关。

+0

谢谢你的回答@ikegami。我已经知道了。 我在脚本中发现了问题。当我在输入流的read()中等待Java代码时,很多警告可能会溢出错误流并卡住脚本。 – Snow