對《java程式設計師上班那點事》筆者對陣列佔用記憶體質疑
1.《java程式設計師上班那點事》筆者對陣列佔用記憶體的描述
2.實際測試情況:
/**
* 測試一維陣列佔用記憶體
*/
public static void testOneArray() {
System.out.println("當前虛擬機器的最大記憶體:" + Runtime.getRuntime().maxMemory() / 1024 / 1024 + "m------" + Runtime.getRuntime().maxMemory() + "byte");
System.out.println("迴圈前虛擬機器已佔記憶體:" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "m====" + Runtime.getRuntime().totalMemory() + "byte");
try {
int len = 1024 * 1024 * 300;// 設定迴圈次數
byte[] buffer = new byte[len];
for (int i = 0; i < len; i++) {
buffer[i] = (byte) i;
}
System.out.println("迴圈前虛擬機器已佔記憶體:" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "m====" + Runtime.getRuntime().totalMemory() + "byte");
} catch (Error e) {
System.out.println("遇到錯誤:" + e);
}
/*
* 測試結果:
當前虛擬機器的最大記憶體:793m------832438272byte
迴圈前虛擬機器已佔記憶體:127m====133234688byte
迴圈前虛擬機器已佔記憶體:427m====447877120byte
*/
}
/**
* 測試二維陣列佔用記憶體
*/
public static void testTowArray() {
System.out.println("當前虛擬機器的最大記憶體:" + Runtime.getRuntime().maxMemory() / 1024 / 1024 + "m------" + Runtime.getRuntime().maxMemory() + "byte");
System.out.println("迴圈前虛擬機器已佔記憶體:" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "m====" + Runtime.getRuntime().totalMemory() + "byte");
try {
int len = 1024 * 1024;// 設定迴圈次數
byte[][] buffer = new byte[len][300];
for (int i = 0; i < len; i++) {
buffer[i][0] = (byte) i;
buffer[i][1] = (byte) i;
}
System.out.println("迴圈前虛擬機器已佔記憶體:" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "m====" + Runtime.getRuntime().totalMemory() + "byte");
} catch (Error e) {
System.out.println("遇到錯誤:" + e);
}
/*
* 測試結果:
當前虛擬機器的最大記憶體:793m------832438272byte
迴圈前虛擬機器已佔記憶體:127m====133234688byte
迴圈前虛擬機器已佔記憶體:398m====417398784byte
*/
}
分析:個人認為,上面前輩的測試沒有在迴圈直接輸出以下jvm已佔用的記憶體;對比我這次的測試,如果用迴圈之後的減去迴圈之前的佔用的記憶體推翻了那位前輩的理論,正好相反,對於哪一種是正確的,有待大家的考證?!
相關文章
- 程式設計師對記憶體的理解程式設計師記憶體
- 前端筆記之JavaScript(五)關於陣列和字串那點事前端筆記JavaScript陣列字串
- 虛擬記憶體的那點事兒記憶體
- 對delphi的質疑,一個真正的VC程式設計師的表白 (轉)C程式程式設計師
- Java陣列(基本+記憶體分析)Java陣列記憶體
- java陣列記憶體的探究Java陣列記憶體
- java陣列的記憶體分析Java陣列記憶體
- windows核心程式設計--記憶體對映檔案Windows程式設計記憶體
- AIX程式記憶體佔用數的計算AI記憶體
- 談談 js判斷陣列 那點事JS陣列
- node計算記憶體佔用記憶體
- filebeat實踐-記憶體佔用-最大記憶體佔用記憶體
- scala陣列與java陣列對比陣列Java
- 對程式設計師說點實在話程式設計師
- Linux程式記憶體佔用數的計算Linux記憶體
- C++陣列的儲存|C++陣列所佔記憶體空間C++陣列記憶體
- Shell 程式設計:Bash空格的那點事程式設計
- 讀《瘋狂Java:突破程式設計師基本功的16課》之陣列與記憶體控制部分總結Java程式設計師陣列記憶體
- Java併發程式設計:Java記憶體模型Java程式設計記憶體模型
- MySQL記憶體佔用計算公式MySql記憶體公式
- PHP計算出記憶體最高佔用.PHP記憶體
- PHP陣列到底佔用多少記憶體空間PHP陣列記憶體
- Ken Orr 對 Java 程式設計師的建議 (寫出高質量軟體的祕密)Java程式設計師
- java優化程式設計-記憶體管理Java優化程式設計記憶體
- 記憶體對映記憶體
- 記憶體對齊記憶體
- Java併發程式設計之Java記憶體模型Java程式設計記憶體模型
- 好程式設計師web前端培訓分享JavaScript學習筆記之陣列程式設計師Web前端JavaScript筆記陣列
- [JAVA] Java 陣列、多維陣列,動態、靜態初始化,陣列JVM記憶體模型分析Java陣列JVM記憶體模型
- 對響應式程式設計的懷疑 - lukaseder程式設計
- 一個Java物件到底佔用多大記憶體?Java物件記憶體
- 程式設計師的對聯程式設計師
- Java synchronized那點事Javasynchronized
- 【MongoDB學習筆記】MongoDB索引那點事MongoDB筆記索引
- Java 程式佔用 VIRT 虛擬記憶體超高的問題研究Java記憶體
- C#獲取CPU佔用率、記憶體佔用、磁碟佔用、程式資訊C#記憶體
- 優愛騰三大視訊APP技術對比--記憶體佔用APP記憶體
- C語言中 struct成員變數順序對記憶體的佔用C語言Struct變數記憶體