體積小的軟體佔用內存就小嗎?


不! 少年, 你看:

#include &
#include &
int main()
{
int *p;
for (;;)
{
p = (int*)malloc(sizeof(int)*1000);
}
return 0;
}


看看Chrome和Visual Studio,你就明白了……


推薦一個遊戲

Minecraft

170M左右

玩過的都知道這貨是有多耗配置,耗內存+耗cpu+顯卡


兩者毫無關係


你去看看Chrome,簡直就是病毒。


Prophecy 的 3D 電影《彗星撞地球》是怎麼壓縮成 64k 圖片的?

DEMO程序體積都很小,但是。。。(答主電腦卡機中。。。)


64k的demo運行起來內存佔用很大的


寫了一個編譯後只有1k的控制台程序,從資料庫中取了一億條數據記錄…內存狂飆…


軟體體積很大程度決定於資源大小(比如圖片),而內存佔用只有軟體的編程方式有關,兩者沒有絕對的關聯的,你想天多了。


病毒一般都小,有專吃內存的病毒.....


少年,你太天真了!


去看看qq


軟體對內存的佔用並不受軟體本身體積的限制。因為軟體可以請求遠大於自身體積的內存開銷。

辦公軟體、開發工具、媒體播放器這些軟體,對內存的需求基本來自於本地數據處理時的緩衝。如果處理的是文檔,尺寸通常很小。如果要播放影片,幾乎所有的播放器都不會一次性把全部數據載入內存。畢竟本地存儲隨讀隨取代價不大。

但是瀏覽器需要處理的數據大都取自網路遠端。而只有內存中的數據才能被程序直接訪問。如此一來,瀏覽器不得不將大量網頁數據(包括圖片等多媒體資源)保存下來以備用戶所需。而對「暫存地點」的選擇,絕大多數瀏覽器都會採用少量內存配合大量磁碟緩衝的策略,只把當前或不久之前訪問過很可能還會馬上訪問的數據留在內存,其餘體積更可觀的則存入磁碟。

只有少數異類,會極端地儘可能多地佔據訪問速度高得多的內存,以得到勝過其他軟體的快速響應能力。

比如 Chrome。


這個是不一定的,看開發人員的演算法是否先進。隨便寫個死循環程序,只有幾K的大小,但是可以辦你的資源耗盡。


病毒什麼的,算典型代表吧?


同志,你這種說法是不對的捏,請看下列Java代碼。

public class RamUtil {
public static void main(String[] args) {
int ramSize = Integer.valueOf(args[0]);
// 專業不catch檢測30年。(ArrayOutOfIndexException我也不管)
byte[] ram = new byte[ramSize];
}
}

這種程序是否有效果取決於你的JVM,如果說有必要者可以問我,我優化一下代碼。因為JVM的原因,可能你的參數和佔用的實際內存大小不匹配,這個就不要打我了。(pia)


ae fx:啥?內存太多?


幾行代碼分分鐘把內存給爆了。


有毛線關係..


就從手機遊戲來說吧 。 chrome什麼的弱爆了。king手游candy crash 內存消耗甚至接近300m 比較chrome約166m。簡直不能不能再叼了


推薦閱讀:

在Linux下,如何強制讓GCC靜態鏈接?
多線程網路編程中如何合理地選擇線程數?
補碼10000000為什麼可以表示-128?
造輪子厲害是一種什麼樣的體驗?
怎樣才算有資格寫技術博客分享?

TAG:軟體 | 編程 | 計算機 | Windows7 |