package test;
public class test4
}
輸出結果:
true
false
這裡說明
string s="a"+"b"+"c";
不等同於
string s="a";
s=s+"b";
s=s+"c";
這是因為s="a"+"b"+"c";直接被jvm視作s="abc",
而string s="a";//這裡建立乙個「a」的字串在方法區常量池裡,s指向它,
s=s+"b";//這裡再建立乙個「ab」的字串在方法區常量池裡,s指向它,「a」的字串並沒有被刪除
s=s+"c";//這裡又建立乙個「abc」的字串在方法區常量池裡,s指向它,「a」及「ab」的字串都沒有被刪除
這個過程會產生很多字串,很耗記憶體,建議直接用上面的方式去處理字串。
要理解這個過程,需要對的方法區常量池及string的是finally的類有所了解。
string 駐留機制
string s1 abc string s2 ab string s3 s2 c string s4 abc string s5 abcd 求兩個object的引用是否相等 console.writeline object.referenceequals s1,s3 false console.w...
記憶體的COPY ON WRITE機制
剛了解到。趕快記下來。每個程式都有自己的資料段,段。補充 dll有自己的資料段,但沒有自己的堆疊。乙個dll,被很多程式呼叫,為什麼 段共享,資料段不共享?就是因為 記憶體的copy on write 機制 程式1呼叫這個dll,執行過程中,dll的資料段肯定會改變,那記憶體就會被copy乙份,原來...
Linux 的記憶體機制
在 linux 中經常發現空閒記憶體很少,似乎所有的記憶體都被系統占用了,表面感覺是記憶體不夠用了,其實不然。這是 linux 記憶體管理的乙個優秀特性,在這方面,區別於 windows 的記憶體管理。主要特點是,無論物理記憶體有多大,linux 都將其充分利用,將一些程式呼叫過的硬碟資料讀入記憶體...