談?wù)凴untime類中的freeMemory,totalMemory,maxMemory幾個方法

轉(zhuǎn)自 :https://blog.csdn.net/wgw335363240/article/details/8878644

最近在網(wǎng)上看到一些人討論到j(luò)ava.lang.Runtime類中的freeMemory(),totalMemory(),maxMemory ()這幾個方法的一些問題粒蜈,很多人感到很疑惑菩收,為什么哭当,在java程序剛剛啟動起來的時候freeMemory()這個方法返回的只有一兩兆字節(jié)唉俗,而隨著 java程序往前運(yùn)行,創(chuàng)建了不少的對象砸紊,freeMemory()這個方法的返回有時候不但沒有減少苛谷,反而會增加盗忱。這些人對freeMemory()這 個方法的意義應(yīng)該有一些誤解,他們認(rèn)為這個方法返回的是操作系統(tǒng)的剩余可用內(nèi)存屉栓,其實根本就不是這樣的舷蒲。這三個方法反映的都是java這個進(jìn)程的內(nèi)存情 況,跟操作系統(tǒng)的內(nèi)存根本沒有關(guān)系友多。下面結(jié)合totalMemory(),maxMemory()一起來解釋牲平。

maxMemory()這個方法返回的是java虛擬機(jī)(這個進(jìn)程)能構(gòu)從操作系統(tǒng)那里挖到的最大的內(nèi)存,以字節(jié)為單位域滥,如果在運(yùn)行java程序的時 候纵柿,沒有添加-Xmx參數(shù),那么就是64兆启绰,也就是說maxMemory()返回的大約是64*1024*1024字節(jié)昂儒,這是java虛擬機(jī)默認(rèn)情況下能 從操作系統(tǒng)那里挖到的最大的內(nèi)存。如果添加了-Xmx參數(shù)委可,將以這個參數(shù)后面的值為準(zhǔn)渊跋,例如java -cp ClassPath -Xmx512m ClassName,那么最大內(nèi)存就是512*1024*0124字節(jié)着倾。

totalMemory()這個方法返回的是java虛擬機(jī)現(xiàn)在已經(jīng)從操作系統(tǒng)那里挖過來的內(nèi)存大小拾酝,也就是java虛擬機(jī)這個進(jìn)程當(dāng)時所占用的所有 內(nèi)存。如果在運(yùn)行java的時候沒有添加-Xms參數(shù)屈呕,那么微宝,在java程序運(yùn)行的過程的,內(nèi)存總是慢慢的從操作系統(tǒng)那里挖的虎眨,基本上是用多少挖多少蟋软,直 挖到maxMemory()為止镶摘,所以totalMemory()是慢慢增大的。如果用了-Xms參數(shù)岳守,程序在啟動的時候就會無條件的從操作系統(tǒng)中挖- Xms后面定義的內(nèi)存數(shù)凄敢,然后在這些內(nèi)存用的差不多的時候,再去挖湿痢。

freeMemory()是什么呢涝缝,剛才講到如果在運(yùn)行java的時候沒有添加-Xms參數(shù),那么譬重,在java程序運(yùn)行的過程的拒逮,內(nèi)存總是慢慢的從操 作系統(tǒng)那里挖的,基本上是用多少挖多少臀规,但是java虛擬機(jī)100%的情況下是會稍微多挖一點(diǎn)的滩援,這些挖過來而又沒有用上的內(nèi)存,實際上就是 freeMemory()塔嬉,所以freeMemory()的值一般情況下都是很小的玩徊,但是如果你在運(yùn)行java程序的時候使用了-Xms,這個時候因為程 序在啟動的時候就會無條件的從操作系統(tǒng)中挖-Xms后面定義的內(nèi)存數(shù)谨究,這個時候恩袱,挖過來的內(nèi)存可能大部分沒用上,所以這個時候freeMemory()可 能會有些大胶哲。

自己寫了個例子畔塔,對著測試 結(jié)果應(yīng)該會有更深刻的了解:

---------------------

作者:O溺水的魚0

來源:CSDN

原文:https://blog.csdn.net/wgw335363240/article/details/8878644

版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接纪吮!

package com.trs.tb.encrypt;

public class TestMemory {

public static void main(String[] args) {

System.out.println("free:" + Runtime.getRuntime().freeMemory() / 1024

/ 1024);

System.out.println("total:" + Runtime.getRuntime().totalMemory() / 1024

/ 1024);

System.out.println("max:" + Runtime.getRuntime().maxMemory() / 1024

/ 1024);

System.out.println("=============");

long t = System.currentTimeMillis();

try {

Thread.sleep(3000);

} catch (Exception ee) {

ee.printStackTrace();

}

String[] aaa = new String[2000000];

System.out.println(Runtime.getRuntime().freeMemory() / 1024 / 1024);

System.out.println(Runtime.getRuntime().totalMemory() / 1024 / 1024);

System.out.println(Runtime.getRuntime().maxMemory() / 1024 / 1024);

System.out.println("=============");

try {

Thread.sleep(3000);

} catch (Exception ee) {

ee.printStackTrace();

}

for (int i = 0; i < 2000000; i++) {

aaa[i] = new String("aaa");

}

System.out.println(Runtime.getRuntime().freeMemory() / 1024 / 1024);

System.out.println(Runtime.getRuntime().totalMemory() / 1024 / 1024);

System.out.println(Runtime.getRuntime().maxMemory() / 1024 / 1024);

System.out.println("=============");

try {

Thread.sleep(30000);

} catch (Exception ee) {

ee.printStackTrace();

}

}

}

---------------------

執(zhí)行時間

free:4

total:4

max:63

=============

4

12

63

=============

9

63

63

=============

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俩檬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子碾盟,更是在濱河造成了極大的恐慌棚辽,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冰肴,死亡現(xiàn)場離奇詭異屈藐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)熙尉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門联逻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人检痰,你說我怎么就攤上這事包归。” “怎么了铅歼?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵公壤,是天一觀的道長换可。 經(jīng)常有香客問我,道長厦幅,這世上最難降的妖魔是什么沾鳄? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮确憨,結(jié)果婚禮上译荞,老公的妹妹穿的比我還像新娘。我一直安慰自己休弃,他們只是感情好吞歼,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著塔猾,像睡著了一般浆熔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上桥帆,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機(jī)與錄音慎皱,去河邊找鬼老虫。 笑死,一個胖子當(dāng)著我的面吹牛茫多,可吹牛的內(nèi)容都是我干的祈匙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼天揖,長吁一口氣:“原來是場噩夢啊……” “哼夺欲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起今膊,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤些阅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后斑唬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體市埋,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年恕刘,在試婚紗的時候發(fā)現(xiàn)自己被綠了缤谎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡褐着,死狀恐怖坷澡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情含蓉,我是刑警寧澤频敛,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布项郊,位于F島的核電站,受9級特大地震影響姻政,放射性物質(zhì)發(fā)生泄漏呆抑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一汁展、第九天 我趴在偏房一處隱蔽的房頂上張望鹊碍。 院中可真熱鬧,春花似錦食绿、人聲如沸侈咕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耀销。三九已至,卻和暖如春铲汪,著一層夾襖步出監(jiān)牢的瞬間熊尉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工掌腰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狰住,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓齿梁,卻偏偏與公主長得像催植,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子勺择,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容