人的記憶力會(huì)隨著歲月的流逝而衰退,,寫(xiě)作可以彌補(bǔ)記憶的不足,,將曾經(jīng)的人生經(jīng)歷和感悟記錄下來(lái),也便于保存一份美好的回憶,。范文怎么寫(xiě)才能發(fā)揮它最大的作用呢,?下面我給大家整理了一些優(yōu)秀范文,希望能夠幫助到大家,,我們一起來(lái)看一看吧。
java虛擬機(jī)垃圾回收算法 虛擬機(jī)垃圾回收機(jī)制篇一
生活垃圾收集運(yùn)輸服務(wù)合同
推薦度:
年會(huì)收集節(jié)目通知
推薦度:
java程序員年終總結(jié)
推薦度:
檔案收集管理制度
推薦度:
事跡簡(jiǎn)介
推薦度:
相關(guān)推薦
首先標(biāo)記出所有需要回收的對(duì)象,,標(biāo)記完成后統(tǒng)一回收,。
主要缺點(diǎn): 1. 標(biāo)記和清除效率都很低 2. 產(chǎn)生大量不連續(xù)的內(nèi)存碎片,導(dǎo)致后面分配大內(nèi)存空間失敗
將可用內(nèi)存劃分為大小相等的兩塊, 每次只使用其中一塊,。 當(dāng)這塊用完后,,就將還存活對(duì)象復(fù)制到另外一塊上面,再把已經(jīng)使用的內(nèi)存空間一次清理掉,。
主要缺點(diǎn): 代價(jià)太高,,至少一半的內(nèi)存不能使用。
標(biāo)記過(guò)程和標(biāo)記-清除算法一致,,但是后續(xù)步驟是讓所有存活的對(duì)象都向一端移動(dòng),,然后清理掉邊界以外的內(nèi)存。
當(dāng)前商業(yè)虛擬機(jī)都采用此算法,,分為不同對(duì)象代,,去進(jìn)行不同管理?!鞠嚓P(guān)閱讀】
什么是java位運(yùn)算
位運(yùn)算允許對(duì)整數(shù)中的單個(gè)比特進(jìn)行操作,。位運(yùn)算會(huì)對(duì)連個(gè)操作數(shù)中對(duì)應(yīng)的比特執(zhí)行布爾代數(shù)運(yùn)算,并產(chǎn)生一個(gè)結(jié)果,。
java中有3種位運(yùn)算符:&(與) |(或) ^(異或) ~(非)
看例子說(shuō)明位運(yùn)算的過(guò)程:
public class test{
public static void main(string[] args){
int a=12|2; //1100|0010
n(a);
}
}
結(jié)果是14(1110)
位移運(yùn)算操作的目標(biāo)也是數(shù)字的二進(jìn)制的位,。用來(lái)操作位數(shù)的向左向右移動(dòng)。
java種有3種基本的位移操作:
>>(右移) <<(左移)>>>(無(wú)符號(hào)右移)
<<:將操作符左邊的整數(shù)按位向左邊移動(dòng)運(yùn)算符右邊整數(shù)指定的位數(shù),,在右邊添加0;
看例子:
public class test{
public static void main(string[] args){
int a=8<<1;
n(a);
}
}
8的二進(jìn)制表示:00000000 00000000 00000000 00001000
左移1位后二進(jìn)制:00000000 00000000 00000000 00010000 -> 14
結(jié)果為14
tip:左移相當(dāng)于num*(2^n) 其中num為被移數(shù),,n為移動(dòng)的位數(shù)
>>:右移的道理也是一樣的,注意的是:若最高位為1,,移動(dòng)后最高位用1來(lái)填充,,否則用0來(lái)填充。
例子:
int a=-8>>1;
n(a);
-8的二進(jìn)制:11111111 11111111 11111111 11111000
右移后的二進(jìn)制:11111111 11111111 11111111 11111100 -> -4
結(jié)果為-4
tip:右移相當(dāng)于num/(2^n) 其中num為被移數(shù),,n為移動(dòng)的位數(shù)
>>>:無(wú)符號(hào)右移跟右移原理是一樣的,,只是覆蓋位的覆蓋規(guī)則不同:不管最高位是0還是1,全部用0來(lái)填充。
例子:
int a=-8>>>1;
n(a);
-8的二進(jìn)制:11111111 11111111 11111111 11111000
無(wú)符號(hào)右移后的二進(jìn)制:01111111 11111111 11111111 11111100 -> 2147483644
tip:用無(wú)符號(hào)右移的時(shí)候要注意,,絕對(duì)值很小的負(fù)數(shù)移動(dòng)后都可能成為絕對(duì)值很大的正數(shù),,這在大多數(shù)情況下沒(méi)意義。
奇葩的.例外:
那代碼:
int a=11>>32;
long b=12<<64;
n(a);
n(b);
int類(lèi)型占32位,,long類(lèi)型占64位,,這樣子的話(huà),上面的例子輸出應(yīng)該都是0才對(duì),,因?yàn)閯偤脤⒂行欢家谱吡?,但結(jié)果并不是這樣的。
輸出的結(jié)果是:11 12
這跟java對(duì)位移的底層操作機(jī)制有關(guān):
從結(jié)果可以看出兩個(gè)數(shù)都沒(méi)有變化,,這是因?yàn)?,在進(jìn)行移位前,java首先將要移動(dòng)的位數(shù)跟被移數(shù)的位數(shù)求余,,然后去移動(dòng)余數(shù)個(gè)位數(shù),。上面例子中,32對(duì)32求余,,64對(duì)64求余,,結(jié)果都是0,java系統(tǒng)對(duì)被移數(shù)進(jìn)行0個(gè)位的移動(dòng),,也就是沒(méi)
移動(dòng)啦,。
這樣子的話(huà),看下下面的代碼:
int c=8>>33;
n(c);
因?yàn)閕nt有32位,,那么8實(shí)際上被移動(dòng)的位數(shù)是:332=1;
就相當(dāng)于:int c=8>>1;
結(jié)果自然是:4
s("content_relate");【java虛擬機(jī)垃圾收集算法簡(jiǎn)介】相關(guān)文章:
java虛擬機(jī)的故障處理摘要
11-23
java語(yǔ)言簡(jiǎn)介
09-30
java虛擬機(jī)(jvm)和跨平臺(tái)原理
10-03
權(quán)重隨機(jī)算法的java實(shí)現(xiàn)
12-02
java中shuffle算法的使用
10-03
java語(yǔ)言編程簡(jiǎn)介
09-29
java常見(jiàn)的排序算法的代碼
11-28
java數(shù)據(jù)結(jié)構(gòu)和算法筆記
11-27
java集合類(lèi)基本簡(jiǎn)介
12-08