各位大虾小弟遇到了一个奇怪的问题
在处理png图片的时候
我用到了ImageConsumer中的setPixels和imageComplete等相关的函数。
我的png图片每个大概4-5k但是当程序每次运行到setPixels函数的时候都会让applet所占内存增长3-4m左右
而且每次运行到imageComplete函数的时候又会增长5m左右的内存。
这样下去没过几次内存就溢出了。求教各位大虾,原因为何?万分感谢。在线求解!

解决方案 »

  1.   

    图片计算插值是比较费内存的,唯一的做法就是用完这个Image对象之后及时释放掉。
      

  2.   

    可是我在 ic.imageComplete(error ? 1 : 3); 之后尝试释放内存了
    但是没有效果~
    removeConsumer(ic);
    theConsumers.removeElement(ic);
    ic = null;
    System.gc();请指教!
    万分感谢~!
      

  3.   

    可是我在 ic.imageComplete(error ? 1 : 3); 之后尝试释放内存了 
    但是没有效果~ 
    removeConsumer(ic); 
    theConsumers.removeElement(ic); 
    ic = null; 
    System.gc(); 请指教! 
    万分感谢~!
      

  4.   

    System.gc();
    只是申请回收,GC未必真会去管你,如果他认为值得回收才会去弄;
      

  5.   

    尝试用一些软引用,这样堆栈溢出前就会由GC回收,或者是用虚引用,这样运行GC就会回收。自己做选择好了。