我有一个Perl Tk GUI应用程序,有时在 RAM 使用量超过 4GB 后会崩溃。在某些情况下,使用 Perl Tk,我的 RAM 使用量可以超过 4GB,并且在控制台应用程序中运行测试时,我没有遇到超过 4GB 的问题。
Perl几乎每次崩溃时都会吐出这个错误,但 有时它会崩溃而没有错误:
释放到错误的池 678ea0 而不是 e228dd0 位于 .\common\GUI_TESTS\test_memory_hog_gui.pl 第 41 行。
在搜索此错误时,我能找到的所有内容都与多线程相关,而我们的应用程序不使用多线程。
我想这可能是因为我们有一些配置为 32 位而不是 64 位,所以我按照这个问题中的说明进行操作,发现所有内容都配置为 64 位。
perl -V:ivsize # ivsize='8';
perl -V:ptrsize # ptrsize='8';
perl -V:archname # archname='MSWin32-x64-multi-thread';
Run Code Online (Sandbox Code Playgroud)
下面是一个 GUI 应用程序示例,该应用程序在内存超过 4GB 后崩溃。我已经从我们的应用程序中总结了这一点,崩溃行为是相同的。我们使用的数据结构显然要大得多,因此我多次克隆我们的简化版本以通过 4GB 阈值。
perl -V:ivsize # ivsize='8';
perl -V:ptrsize …Run Code Online (Sandbox Code Playgroud) 我是perl的新手并且寻求最低价值@array.是否有一些常量代表一个非常大的整数?
我知道我可以对数组进行排序并从头开始,但这似乎是浪费了很多CPU周期.在Perl中我的问题的优雅解决方案是什么?
这必须在Perl中完成:
我有大约30_146_890_129和17_181_116_691和21_478_705_663的整数。
这些应该由6个字节组成,其中:
abc我想隔离出什么是价值a。我如何在Perl中做到这一点?
我试过使用>>运算符:
perl -e '$a = 330971351478 >> 16; print "$a\n";'
5050222
Run Code Online (Sandbox Code Playgroud)
perl -e '$a = 17181116691 >> 16; print "$a\n";'
262163
Run Code Online (Sandbox Code Playgroud)
但是这些数字并不符合我的期望,更像是0-1000。
如果我也能获得价值b,c但我真的不需要那些,那是奖励。
谢谢!