簡體   English   中英

怎么可能GHCI顯示器使用的內存比我實際擁有的更大?

[英]How is it possible GHCI displays used memory of bigger value than I physically have?

基本問題伴隨着GHCI口譯員的引用。 是的,我知道假設使用代碼將其編譯成可執行文件,但是,由於我是Haskell的初學者,GHCI似乎是學習一些Haskell的完美選擇。

當我使用重計算負載algortihms時,我有時會遇到如下消息:

Prelude Data.List> foldl' (+) 0 [1..2*10^8]
20000000100000000
it :: (Num b, Enum b) => b
(8.35 secs, 17,600,063,056 bytes)

同時,我只有8 GB的RAM物理安裝。

如果內存使用量超過某個限制(我不確定它有多少,但建議可以使用所有內存),則拋出Stack Overflow異常,如下圖所示:

Prelude> foldl (+) 0 [1..5 * 10^7]
*** Exception: stack overflow

但是,如果我的RAM總共為8 GB並且沒有拋出Stack Overflow異常,那么該程序如何使用> 16 GB的內存?

垃圾收集的魔力:報告的數字:set +s你顯示的:set +s告訴從分配器請求的總字節數,即使它們稍后被釋放並返回到分配器以在計算完成之前重用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM