簡體   English   中英

當vector <vector <vector <int> >>大於RAM時,為什么我的程序會產生正確的輸出?

[英]Why does my program produce correct output when my vector< vector< vector<int> > > is larger than the RAM?

我已經實現了一個系統,它將一些數據作為輸入,然后產生一個非常大的vector< vector< vector<int> > > ,然后我將其輸出到一個文件中。

在計算結果后,我決定計算最終三維向量內的數字總數,它是: 1386502951

這意味着存儲此向量所需的內存總量至少為1386502951*4 bytes = 5.16512599 GB

但是我的RAM內存只有4 GB。

有人可以向我解釋這有可能嗎?

先感謝您!

您的應用程序能夠分配比計算機上物理安裝的內存更多的內存,因為它支持虛擬內存。 分配,分頁和釋放虛擬內存由操作系統處理,以允許您的應用程序運行,而不必擔心耗盡物理內存。

請記住,當您的應用程序從其堆中釋放內存時,可能不會立即釋放釋放已分配的內存。 這傾向於讓人們認為他們的應用程序有時會使用更多的內存。

有很多網站討論虛擬和物理主題以及操作提供的任何API,允許您對其進行控制。 快速的Google Dance應該會為您提供大量有關此主題的鏈接。

可能有很多原因,這不會失敗。

正如評論中所述,最有可能的是Windows將大部分內容放入虛擬內存(而不是RAM)中。

另一種選擇(在某些情況下)是優化者正在清理你的清單(可能?)

查看確切情況的最佳方法是打開任務管理器並切換到“性能”選項卡,然后查看它使用的RAM監視器。

暫無
暫無

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

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