[英]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.