<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大夢(mèng)想家

    5年開(kāi)發(fā)工程師,2年實(shí)施經(jīng)理,X年售前顧問(wèn),......
    數(shù)據(jù)加載中……
    再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~
           今天早上的Blog大家都看到了,大家的留言我也一一拜讀過(guò)了~感謝 zhrb ,千里冰封 javazhai ,BeanSoft ,plankton13 ,mingj 等的回復(fù)。
            下午反省了一下自己的代碼,得出一下結(jié)論和疑問(wèn),有時(shí)間,請(qǐng)大家再討論一下。
            1.反省代碼,整理所有用過(guò)的對(duì)象,特別上查詢(xún)完數(shù)據(jù)庫(kù)返回的上萬(wàn)條記錄的結(jié)果集,一一將他們制空,然后再System.gc()看看效果;
            2.因?yàn)槭峭ㄓ脭?shù)據(jù)查詢(xún)平臺(tái),那么結(jié)果集的展示形式是可以由實(shí)施人員自由定義的,比方說(shuō)字體,顏色,圖片等等,雖然我沒(méi)有使用JFace對(duì)資源封裝的統(tǒng)一標(biāo)準(zhǔn)組件,但是絕對(duì)是在使用完一一做了銷(xiāo)毀處理,我的疑問(wèn)是,我對(duì)資源做了銷(xiāo)毀處理,是不是這部分資源在虛擬機(jī)中的占用空間依舊存在,也就是并沒(méi)有真正的銷(xiāo)毀他們;
                    這里談?wù)勛约旱膶?shí)踐經(jīng)驗(yàn),如果真的是資源的問(wèn)題,首先出問(wèn)題的還輪不到Javaw,Eclipse馬上就會(huì)出來(lái)叫囂,告訴你沒(méi)有足夠的資源的可以使用,不能創(chuàng)建GC,字體,顏色或者是圖片等等,如果還是不解決,客戶(hù)端的GUI馬上就會(huì)變形,變的面目全非~
            3.我現(xiàn)在碰到的問(wèn)題還不是內(nèi)存不足,或者內(nèi)存溢出,而是Javaw的內(nèi)存占有再不斷的遞增,并不是某一個(gè)恒定值區(qū)間;


            希望大家再次賜教!

    客戶(hù)虐我千百遍,我待客戶(hù)如初戀!

    posted on 2007-10-21 20:34 阿南 閱讀(1376) 評(píng)論(12)  編輯  收藏 所屬分類(lèi): Eclipse-RCP

    評(píng)論

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~  2007-10-21 21:47 mingj

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~  2007-10-22 01:34 千里冰封

    還有一點(diǎn),盡量用局部變量,少用成員變量,更不要把大量變量做為參數(shù)傳來(lái)傳去。

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~ [未登錄](méi) 2007-10-22 09:50 wzjin

    如果你使用非java代碼,如jni,在操作系統(tǒng)管理器看到的和JProfiler看到的不一樣,前者可能內(nèi)存占用一致增加,后這顯示內(nèi)存占用呈鋸齒型,也就是有垃圾回收作用。你可以試試。沒(méi)有用過(guò)swt,但是用過(guò)jni。

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~  2007-10-22 10:14 阿南

    其實(shí)SWT底層就是JNI實(shí)現(xiàn)的,那么請(qǐng)問(wèn)您是如何處理JNI占有大量?jī)?nèi)存的問(wèn)題的?

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~  2007-10-22 10:27 豬兒笨笨

    我做RCP比較多,給你以下幾個(gè)建議
    1、打開(kāi)Windows的任務(wù)管理器,先看一下你的UI句柄的數(shù)量,如果過(guò)多,表示有資源沒(méi)有釋放
    2、用TPTP之類(lèi)的工具檢查有無(wú)大的內(nèi)存占用
    3、如果是Tree的內(nèi)容太多(可能性不太大),用SWT.VIRTUAL試試。

    我感覺(jué)應(yīng)該是代碼的問(wèn)題,而非SWT的問(wèn)題,因?yàn)槲业捻?xiàng)目中有30萬(wàn)行,近百個(gè)插件,加上WTP平臺(tái)都沒(méi)有這個(gè)問(wèn)題。

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~  2007-10-22 10:39 豬兒笨笨

    如果你使用了圖片,麻煩先在LabelProvider中的getImage返回null,看一下是不是因?yàn)閳D片資源的問(wèn)題

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~  2007-10-22 10:41 阿南

    是不是字體,顏色,圖片對(duì)資源都有較大影響?

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~  2007-10-22 10:43 Matthew Chen

    swt就是jni實(shí)現(xiàn)的,所以它dispose的時(shí)候一定就釋放了系統(tǒng)的資源(除非swt可能有的bug),留下純java的對(duì)象卻是gc管理的,所以你確定dispose了的話(huà)問(wèn)題就還在jvm內(nèi)部,大的數(shù)據(jù)量一般會(huì)有緩沖機(jī)制,說(shuō)到這里,不知你的程序是否依托于容器了,提供了對(duì)象緩沖池的實(shí)現(xiàn),需要時(shí)獲得對(duì)象,釋放時(shí)直接歸到池中,不作銷(xiāo)毀,而是供下一次類(lèi)似的請(qǐng)求直接修改并做二次使用,通過(guò)動(dòng)態(tài)調(diào)整對(duì)象數(shù)量來(lái)適應(yīng)不同需求。(但也可能內(nèi)存占用增加就時(shí)由這部分的不合理使用產(chǎn)生的,看看容器有沒(méi)有全局變量的使用,例如session之類(lèi)的)

    你上一篇中提到任務(wù)管理器顯示占用增加,我覺(jué)得并不是程序在占用,而是虛擬機(jī)根據(jù)你程序使用內(nèi)存的趨勢(shì)不斷要求系統(tǒng)提供更大的內(nèi)存以保證程序的運(yùn)行。

    還有swt占用的系統(tǒng)資源不會(huì)由jvm管理,所以你對(duì)swt資源的釋放對(duì)jvm內(nèi)存占用沒(méi)有影響。

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~  2007-10-22 10:47 阿南

    恩,你的觀點(diǎn),我同意,JVM應(yīng)該就是在幫我增加內(nèi)存,以防止我再次使用更大的數(shù)據(jù)時(shí),出現(xiàn)內(nèi)存溢出~

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~  2007-10-22 10:57 阿南

    看來(lái),我得想辦法減少大數(shù)據(jù)量的出現(xiàn)了~我的數(shù)據(jù),每次都是上萬(wàn)的,而且是一次讀取的,這個(gè)就是很可怕的~

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~  2007-10-22 13:09 豬兒笨笨

    如果你的記錄都是小的記錄
    一條不超過(guò)1K,應(yīng)該也不是這個(gè)問(wèn)題
    一萬(wàn)條也才10M
    我想應(yīng)該還是有數(shù)據(jù)沒(méi)有正確釋放
    比如上一次取得的數(shù)據(jù)還被某個(gè)static變量持有

    # re: 再次尋求從事過(guò)Java桌面的應(yīng)用的朋友解惑~  2008-07-06 23:30 三告習(xí)習(xí)

    System.gc() 并不能按照你的意愿馬上回收無(wú)效對(duì)象,因?yàn)榧ぐl(fā)垃圾回收操作是有條件的,這個(gè)條件不是你來(lái)決定的,而是虛擬機(jī)以它自己的算法來(lái)計(jì)算的,函數(shù)的調(diào)用起的作用好像不大。

    如果是swt的話(huà),對(duì)象要銷(xiāo)毀與否,分為兩種吧。一種是從系統(tǒng)里調(diào)出來(lái)的,比如System.get...,這樣的對(duì)象是不需要你來(lái)銷(xiāo)毀的,如果是你new出來(lái)的,那么你就要負(fù)責(zé)銷(xiāo)毀它,這在于swt上特別重要,java的垃圾回收也不會(huì)幫你自動(dòng)回收好像哦,因?yàn)樗婕暗絡(luò)ni的內(nèi)容,不是虛擬機(jī)能管的吧。

    在swt對(duì)象中,最好每個(gè)對(duì)象都配一個(gè)dispost方法,在父容器里管理子對(duì)象,父容器被dispost時(shí)自動(dòng)調(diào)用子對(duì)象的dispost方法。

    我在使用使用swt時(shí),管理資源還是比較麻煩的,還得好好研究。
    主站蜘蛛池模板: 亚洲欧美黑人猛交群| 亚洲国产a∨无码中文777| 精品免费久久久久久成人影院| 亚洲人成免费电影| 97在线视频免费| 99在线免费观看视频| 97在线视频免费| 免费成人激情视频| 一二三四在线播放免费观看中文版视频| 亚洲网站免费观看| 免费精品国产自产拍在| 国产卡二卡三卡四卡免费网址| 91在线视频免费看| 四虎免费在线观看| 四虎在线播放免费永久视频| 日韩亚洲国产综合久久久| 四虎永久精品免费观看| 亚洲高清免费视频| 亚洲乱码中文字幕综合| 亚洲av色影在线| 亚洲一级毛片在线播放| 亚洲精品无码高潮喷水A片软| 国产精品亚洲а∨天堂2021| 日韩在线一区二区三区免费视频 | 亚洲精品色午夜无码专区日韩| 久久被窝电影亚洲爽爽爽| 亚洲五月六月丁香激情| 亚洲一级毛片免费看| 久久亚洲精品无码网站| 在线播放免费人成视频网站 | 亚洲AV综合色区无码二区偷拍| 亚洲日本在线电影| 七次郎成人免费线路视频| 日本免费在线观看| 成人毛片免费网站| 亚洲人成网站观看在线播放| 久久精品国产精品亚洲艾| 亚洲人成77777在线观看网| 美女裸免费观看网站| 人人玩人人添人人澡免费| 无码人妻一区二区三区免费手机|