【发布时间】:2015-03-21 11:42:50
【问题描述】:
一周前我增强了 Racket 博士的记忆,现在我想将其减少到与以前相同的数量。因此,我将其限制为 128 MB。但这没有任何效果...它总是消耗超过 128 MB...
这确实是个问题,因为它会导致我的计算机过热。 有人知道我可以如何限制 Dr. Racket 以使其不超过 128 MB?
这是问题的截图:
【问题讨论】:
一周前我增强了 Racket 博士的记忆,现在我想将其减少到与以前相同的数量。因此,我将其限制为 128 MB。但这没有任何效果...它总是消耗超过 128 MB...
这确实是个问题,因为它会导致我的计算机过热。 有人知道我可以如何限制 Dr. Racket 以使其不超过 128 MB?
这是问题的截图:
【问题讨论】:
程序使用的内存和 DrRacket 总使用的内存之间存在差异。当我启动 DrRacket 并且在进入或运行任何程序之前,我看到 DrRacket 使用 250MB。交互窗口显示我也将内存限制为 128MB,这意味着该特定程序不能超出这些范围,但 DrRacket 的某些功能在您的机器上使用的内存比我的要多。
我进入设置并删除了一些我不使用的功能(如 Algiol60)。之后重新启动时,我使用的内存减少了 50MB,这确实确认内存是 DrRacket 使用的,而不是程序使用的。
对于一个特定的复杂程序,我猜后台扩展可能会占用大量内存。也许您也可以将其关闭,以查看当前使用的内存是否下降。
关于热量
正如 Óscar 所提到的,只要您没有听到正在使用交换(大量磁盘使用),内存使用与热量几乎没有关系。热量与 CPU 使用率有关。在进行计算时,操作系统将提供可用资源,并可能增加 CPU 的频率,从而增加热量。
如果您正在制作一个有循环等待任务的线程应用程序,请确保您没有制作一个活动循环。睡眠可能会降低活跃度,也许 Racket 有更好的方法(从未在 Racket 中完成过 threded 应用程序)
如果你在计算一些东西,CPU 的增加是很自然的。这样你才能早点得到答案。可以更改计算机设置以支持电池使用时间。检查操作系统和 BIOS。 (这使得这不是球拍问题)
【讨论】:
Dr Racket 状态栏中显示的内存为 N/A。
实验:
(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
>
假设您得到相同的结果,您的计算机运行较热还有其他原因。
【讨论】:
我不认为消耗的额外内存是计算机过热的原因。更有可能是因为某些功能正在消耗 CPU。请尝试优化代码。
事实上,通过限制可用内存,您最终可能会导致更多 disk paging,从而减慢速度并可能消耗更多 CPU……并导致更多过热。
【讨论】: