相关疑难解决方法(0)

Perl Tk 应用程序有时会在内存使用量超过 4GB 后崩溃

我有一个Perl Tk GUI应用程序,有时在 RAM 使用量超过 4GB 后会崩溃。在某些情况下,使用 Perl Tk,我的 RAM 使用量可以超过 4GB,并且在控制台应用程序中运行测试时,我没有遇到超过 4GB 的问题。

  • 操作系统:Microsoft Windows [版本 10.0.19044.2006]
  • Perl版本:v5.30.3
  • Tk 版本:804.036(CPAN 上最新可用)

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)

memory windows perl tk-toolkit perltk

15
推荐指数
1
解决办法
575
查看次数

什么是MAX_INT的perl等价物?

我是perl的新手并且寻求最低价值@array.是否有一些常量代表一个非常大的整数?

我知道我可以对数组进行排序并从头开始,但这似乎是浪费了很多CPU周期.在Perl中我的问题的优雅解决方案是什么?

arrays perl constants built-in

14
推荐指数
2
解决办法
9305
查看次数

如何隔离整数中最左边的字节

这必须在Perl中完成:

我有大约30_146_890_129和17_181_116_691和21_478_705_663的整数。

这些应该由6个字节组成,其中:

  • 字节0-1:值 a
  • 字节2-3:值 b
  • 字节4-5:值 c

我想隔离出什么是价值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。

如果我也能获得价值bc但我真的不需要那些,那是奖励。

谢谢!

perl bit-manipulation

2
推荐指数
1
解决办法
94
查看次数