gpt4 book ai didi

Perl 不能在具有 32 GB RAM 的 Snow leopard Mac 服务器上分配超过 1.1 GB

转载 作者:行者123 更新时间:2023-12-04 22:31:41 27 4
gpt4 key购买 nike

我有一台带有 32GB RAM 的 Mac 服务器(雪豹)。当我尝试在 Perl (v 5.10.0) 中分配超过 1.1GB 的 RAM 时,出现内存不足错误。这是我使用的脚本:

#!/usr/bin/env perl

# My snow leopard MAC server runs out of memory at >1.1 billion bytes. How
# can this be when I have 32 GB of memory installed? Allocating up to 4
# billion bytes works on a Dell Win7 12GB RAM machine.

# perl -v
# This is perl, v5.10.0 built for darwin-thread-multi-2level
# (with 2 registered patches, see perl -V for more detail)

use strict;
use warnings;

my $s;
print "Trying 1.1 GB...";
$s = "a" x 1100000000; # ok
print "OK\n\n";

print "Trying 1.2 GB...";
$s = '';
$s = "a" x 1200000000; # fails
print "..OK\n";

这是我得到的输出:
Trying 1.1 GB...OK

perl(96685) malloc: *** mmap(size=1200001024) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Out of memory!
Trying 1.2 GB...

任何想法为什么会发生这种情况?

更新 4:42pm 11/14/13

根据 Kent Fredric(请参阅下面的 2 个帖子),这是我的 ulimit。虚拟内存默认为无限制

$ ulimit -a |字节
数据段大小(千字节,-d)无限制
最大锁定内存 (kbytes, -l) 无限制
最大内存大小 (kbytes, -m) 无限制
管道大小(512 字节,-p)1
堆栈大小(千字节,-s)8192
虚拟内存(千字节,-v)无限制

$ perl -E 'my $x = "a"x 1200000000;打印 "ok\n"'
perl(23074) malloc: *** mmap(size=1200001024) 失败(错误代码=12)
*** 错误:无法分配区域
*** 在 malloc_error_break 中设置断点进行调试
内存不足!

$ perl -E 'my $x = "a"x 1100000000;打印 "ok\n"'
好的

我尝试将虚拟内存设置为 100 亿但无济于事。

$ ulimit -v 10000000000 # 100 亿

$ perl -E 'my $x = "a"x 1200000000;打印 "ok\n"'
perl(24275) malloc: *** mmap(size=1200001024) 失败(错误代码=12)
*** 错误:无法分配区域
*** 在 malloc_error_break 中设置断点进行调试
内存不足!

最佳答案

您正在使用 Perl 的 32 位构建(如 perl -V:ptrsize 所示),但您需要一个 64 位构建。我建议使用 perl 安装本地 perlbrew

这可以通过在安装 Perl 时将 -Duse64bitall 传递给 Configure 来实现。

这可以通过在安装 Perl 时将 --64all 传递给 perlbrew install 来实现。

(出于某种奇怪的原因,perl -V:use64bitall 说这已经完成,但显然没有。)

关于Perl 不能在具有 32 GB RAM 的 Snow leopard Mac 服务器上分配超过 1.1 GB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19982907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com