我需要模拟一个需要大量内存的过程。例如,在一台 4.0 GiB 的机器上,我需要一个可以吃掉 3.2 GiB 的进程(给或取几个 MiB)。
我认为它应该很简单:
my $mbytes = 3276;
my $huge_string = 'X' x ($mbytes * 1024 * 1024);
但最终我的进程消耗的内存是我需要的两倍。
这在两台 Windows 7 amd64 机器上是相同的:一台使用 64 位,另一台使用 32 位构建的草莓 Perl
我正在使用 Sysinternals Process Explorer 并观看“Private Bytes”
当然,我可以$mbytes /= 2
(现在,我可能会这样做),但是:
有没有更好的办法?
谁能解释为什么金额是字符串长度的两倍?