java 板


LINE

不好意思最近問題有點多... ex1: Integer a = 6; bytecode: 0: bipush 6 2: invokestatic #19// Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 5: astore_1 ex2: Integer a = new Integer(6): bytecode: 0: new #20 // class java/lang/Integer 3: dup 4: bipush 6 6: invokespecial #21 // Method java/lang/Integer."<init>":(I)V 9: astore_1 問題: 表面上看起來ex1好似沒有new,但實際上進到valueOf看還是new了 請問這兩個ex的差別在哪呢? 補充小問題: #數字:這個數字我查到的資料是說class裡的第幾個常量 可我不知道要怎麼利用這個變數debug... 可以舉個例子說明嗎? --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.32.110
※ 文章網址: http://webptt.com/m.aspx?n=bbs/java/M.1419253219.A.B48.html
1F:推 yyc1217: valueOf預設用到-128~127的值作的cache 12/22 22:54
2F:→ yyc1217: constructor則是保留原來new的方式 是問這個嗎? 12/22 22:55
3F:→ kdok123: 是的! 可是做cache的方式還是new,想問的是這兩種new法 12/23 09:46
4F:→ kdok123: 有什麼樣的差異嗎? (貌似ex1方法運行效率比較好?) 12/23 09:47
※ 編輯: kdok123 (60.250.185.98), 12/23/2014 09:47:54
5F:推 yyc1217: 前者是一開始就new好存起來用 後者是要用時才new 12/23 11:05
6F:→ ssccg: 一直new新的就佔記憶體啊 12/23 12:42
7F:→ duckfly: -128~127一開始就在存於pool中了,不在這範圍的當然要new 12/23 12:59
8F:→ duckfly: 而且a=6是直接從pool撈出來,並不是runtime才new, 12/23 13:03
9F:→ duckfly: valueOf原始碼你在仔細看清楚一點,6在範圍內不需要new 12/23 13:05
10F:→ kdok123: 我的意思是這樣的... 每一次new都會對GC產生負擔吧? 12/23 14:15
11F:→ kdok123: 如果Integer剛開始就new好了255個object(constant pool) 12/23 14:16
※ 編輯: kdok123 (223.136.244.216), 12/23/2014 14:17:17
12F:→ kdok123: ,這樣GC是清不掉的? 12/23 14:17
13F:→ kdok123: 另外這樣的動作compile time的時候執行了這麼多次,不會 12/23 14:17
14F:→ kdok123: 拖累效能嗎? 12/23 14:18
15F:→ kdok123: 雖然runtime的時候可以直接呼叫new好的address 12/23 14:18
16F:→ kdok123: 可是這樣比需要用的時候再new,對效能更好嗎? 12/23 14:18
17F:→ duckfly: String pool是需要才new, integer pool則一開始就new完, 12/23 15:31
18F:→ duckfly: 因int有boxing,加上小整數的經常使用(如迴圈i), 12/23 15:34
19F:→ duckfly: 因此"大部份"狀況下小整數先new起來放是比較好的做法 12/23 15:35
20F:→ duckfly: 而int pool是屬於permanet generation, GC是不會清的 12/23 15:37
21F:→ duckfly: 放在permanent的資料,GC是不會去掃描,也不會造成GC負擔 12/23 16:32
22F:→ duckfly: (其實permanet區還是有major GC,但鮮少執行可視為無) 12/23 16:55
23F:→ Chikei: 1. Integer pool是Integer static field 12/23 19:33
24F:→ Chikei: 2. static field只有在class的class loader可以被gc的時候 12/23 19:34
25F:→ Chikei: 才會跟著變成可被gc 12/23 19:34
26F:→ Chikei: 3. Integer的class loader是Bootstrap,不會被gc(求反例? 12/23 19:36
27F:→ Chikei: 因為3,Integer class不會被gc,根據1/2,pool不會被gc 12/23 19:37
28F:→ swpoker: 我以為寫java的人可以不用管這種層面的問題 12/24 09:56







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP