我可以以操作系统无关的方式限制Perl进程使用的内存吗?

我可以以操作系统无关的方式限制Perl进程使用的内存吗?,perl,memory,Perl,Memory,是否存在一个与操作系统无关的Perl模块,该模块对进程可以使用的虚拟内存量设置了硬限制;e、 这样,如果进程开始消耗太多内存,它就会被杀死 我明白了,这显然是特定于Apache的;而且,这需要调用一个check函数(还有一种检查进程大小的方法) 我在过去使用过ulimit,但它要求您(AFAIK)有一个额外的启动过程,并且它是特定于操作系统的 谢谢, Jon我认为perl不知道它的内存使用是真实的还是虚拟的。但是,如果您从需求中删除了real和virtual,那么您可以对所使用的内存进行限制 而

是否存在一个与操作系统无关的Perl模块,该模块对进程可以使用的虚拟内存量设置了硬限制;e、 这样,如果进程开始消耗太多内存,它就会被杀死

我明白了,这显然是特定于Apache的;而且,这需要调用一个check函数(还有一种检查进程大小的方法)

我在过去使用过ulimit,但它要求您(AFAIK)有一个额外的启动过程,并且它是特定于操作系统的

谢谢,
Jon

我认为perl不知道它的内存使用是真实的还是虚拟的。但是,如果您从需求中删除了real和virtual,那么您可以对所使用的内存进行限制


而且可能会让您更接近,或者是
setrlimit

在shell中
ulimit
所做的正是
setrlimit
在您的过程中所做的,所以只要Windows不是必需的,我想说
BSD::Resource
是这里的最佳选择。我看不出Devel::Size有什么帮助。如果一个变量没有绑定,它可能会告诉您它正在使用多少,但它不知道内存的其余部分。Cache::SizeAwareMemoryCache同样有限且不合适。我在想,也许可以迭代所有“较大”变量,看看每个变量占用了多少空间,但这完全忽略了perl可执行文件本身的大小,除非加载了大量数据,否则这一点并不重要。现在我想知道是否有某种方法可以确定可执行文件使用的资源。。而不是通过抛出并调用top或ps:)