限制 Dr. Racket 的内存

6
我一个星期前增加了Dr. Racket的内存,现在我想将它减少到之前的同样大小。所以我将它限制回128MB。但是这没有任何效果... 它总是消耗比128MB更多的内存...

这真的是个问题,因为它会导致我的电脑过热。有人知道我该如何限制Dr. Racket,使它不超过128MB吗?

这是问题的截图:

enter image description here

3个回答

8
一个程序使用的内存和DrRacket总使用的内存之间存在差异。在启动DrRacket并在输入或运行任何程序之前,我可以看到DrRacket使用了250MB。交互窗口显示我的内存限制为128MB,这意味着该特定程序无法超出这些界限,但是DrRacket的一些功能在您的机器上使用的内存比我的多得多。
我进入设置并删除了一些我不使用的功能(如Algiol60)。在此之后重新启动,我使用了50MB的内存少,这确实证明了内存是由DrRacket而不是程序使用的。
对于一个特定的复杂程序,我猜测后台扩展可能会使用大量内存。也许你也可以关闭它,以查看当前使用的内存是否减少。
关于热量: 如Óscar所提到的,内存使用与热量几乎没有关系,只要您没有听到交换正在使用(磁盘使用较重)。热量与CPU使用有关。在进行计算时,操作系统将可用资源提供给用户,并可能增加CPU的频率,从而增加热量。
如果您正在创建一个具有等待任务循环的线程应用程序,请确保不要创建活动循环。休眠可能会降低活跃度,也许Racket有更好的方法(我从未在Racket中完成过线程应用程序)。
如果您正在计算某些内容,则CPU的增加是自然的。这样可以更早地获得答案。计算机设置可以更改以支持电池使用时间。请检查操作系统和BIOS。(这使得这不是一个Racket问题)。

我检查了我的首选项,我猜高内存使用率来自于Dr Racket启动时启动了所有工具的事实。我禁用了“Algol60”,“Macro Stepper”(从未使用过它),“how to design programs”等,但我不知道它们在做什么。我搜索了文档,但它们没有解释每个工具在做什么。我将尽可能禁用,并尝试仅启用必要的内容,如“检查语法”等。 - Kevin

3

在Dr Racket状态栏中显示的内存为N/A。

实验:

  1. 选择Racket | 限制内存并指定8 MB(最小值)。
  2. 选择文件| 新建标签页。
  3. 在交互面板中分配8 MB的内存。例如,输入(define x (make-bytes (* 8 1024 1024)))。(我建议将结果分配给变量,像这样,因为我怀疑您不希望Dr Racket打印出8 MB的字节。)

我得到的结果:

Welcome to DrRacket, version 6.1.1.6--2014-12-21(aabe9d7/a) [3m].
Language: racket [custom]; memory limit: 8 MB.
> (define x (make-bytes (* 8 1024 1024)))
out of memory 
> 

假设您得到了相同的结果,那么您的计算机发热的原因可能是其他问题。

2
我认为额外消耗的内存不是导致你的计算机过热的原因。更可能的是,某些功能正在消耗CPU。尝试优化代码而不是限制可用内存。
实际上,通过限制可用内存,你可能会导致更多的磁盘分页,从而减慢事物的速度并潜在地消耗更多的CPU...并导致更多的过热。

这是真的,但是一周前我在一个只有128MB内存的项目上工作时,一切都很顺利,但后来我意外地将内存限制增加了很多。之后我注意到,在Dr Racket上处理同一项目时,我的电脑会过热(在增加内存限制之前我没有这个问题)。所以我将内存限制降低回128MB,但这并没有帮助。所以如果最初使用128MB和同一项目时它没有过热,现在也不应该过热吧? - Kevin
它不会导致更多的磁盘使用。当您达到限制时,运行的程序将停止。 - Sylwester

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接