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

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

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

    rednight

    0x2B|~0x2B,That's not a question,Just do it.
    posts - 32, comments - 14, trackbacks - 0, articles - 0

    Memory Leak for ListCellRenderer

    Posted on 2007-01-16 09:04 rednight 閱讀(432) 評(píng)論(0)  編輯  收藏

    We have known, the ListCellRenderer interface has only one method public Component getListCellRendererComponent(), and it returns a Component. When a JList needs to compute its dimension or paint its cell item, this method will be called. So it will be called frequently, and we have a best practice, try to reuse object, avoid time-consumed computation and unnecessary operation in this method.

    ?

    Recently found, there is a memory leak bug for list cell renderer in both JDK 1.4.x and JDK 5 (don’t know whether has the same bug in earlier JDK). The component returned from getListCellRendererComponent() method could not be GC, and all its referenced objects also could not be GC. Unfortunately, this bug is only fixed in JDK 6.

    ?

    So currently, if a JList use the ListCellRenderer, but only holds a little resource (eg: the JList only has little items, and the component is returned from ListCellRenderer is a simple JLable), you may not care about the memory leak.

    ?

    But if a JList use the ListCellRenderer, and holds a large resource, you should remember to use the following way to avoid memory leak.

    ?

    Work Around: Subclass JList and invoke removeAll after painting is done:

    ?????? public class xxxList extends JList {

    ??????????? private CellRendererPane renderer;

    ??????????? private CellRendererPane getRenderer() {

    ??????????????? if (renderer == null) {

    ??????????????????? for (int i=0; i<getComponents().length; i++) {

    ????????????????????????????????????????? Component c? = getComponents()[i];

    ??????????????????????? if (c instanceof CellRendererPane) {

    ??????????????????????????? renderer = (CellRendererPane)c;

    ??????????????????????????? break;

    ??????????????????????? }

    ??????????????????? }

    ??????????????? }

    ??????????????? return renderer;

    ??????????? }

    ??????????? protected void paintComponent(Graphics g) {

    ??????????????? super.paintComponent(g);

    ??????????????? CellRendererPane renderer = getRenderer();

    ??????????????? if (renderer != null) {

    ??????????????????? renderer.removeAll();

    ??????????????? }

    ??????????? }

    ??????? }


    Please refer to http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5044798 for more details.

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 最新亚洲成av人免费看| 色多多免费视频观看区一区| 99国产精品免费视频观看| 亚洲精品~无码抽插| 久久美女网站免费| 亚洲伊人tv综合网色| 久久九九兔免费精品6| 亚洲日本久久一区二区va| 欧美a级在线现免费观看| 亚洲中文字幕乱码一区| 国产精品久久久久影院免费| 免费看黄网站在线看 | 成人毛片免费观看视频大全| 亚洲熟妇AV一区二区三区浪潮| 麻豆国产精品入口免费观看| 麻豆69堂免费视频| 亚洲精品美女久久777777| 色猫咪免费人成网站在线观看 | 亚洲精品123区在线观看| 性感美女视频在线观看免费精品 | 亚洲男人av香蕉爽爽爽爽| 国产午夜成人免费看片无遮挡 | 九九九精品成人免费视频| 国产亚洲美女精品久久久久| 亚洲情侣偷拍精品| 三年片在线观看免费| 亚洲国产成人精品无码一区二区| 免费看的一级毛片| 久久久久久久国产免费看| 亚洲美女视频一区| 日本成人在线免费观看| 中文字幕在线成人免费看| 亚洲成a人片在线观看播放| 国产精品免费视频播放器| 久操视频在线免费观看| 亚洲成av人片在线天堂无| 亚洲人成网亚洲欧洲无码久久| 免费福利网站在线观看| 一个人晚上在线观看的免费视频| 亚洲欧洲精品国产区| 亚洲JIZZJIZZ中国少妇中文|