Home Sign up   |   Sign in

手机内存初始与释放问题:

2006-01-06 15:35:15   Comments (0)   Views (1237)   J2ME经验

问题描述:
1 =null的问题
比如 int test[][] = new int[100][100]
释放的时候 方法一与方法二是否有区别
方法一 细致点
for (int i=0;i<100;i++){
test[i] = null;
}
test = null;
方法二 粗矿点
test = null

2 new的问题
int test[] = new [100];
没有释放,就又 new [100],不知道是否会造成潜在的危险。

代码:
     String test[][];

     private void test_init() {
           test = new String[100][400];
           mem_low = 210000;
     }

     //释放方法一
     private void test_release_every() {
           for (int i = 0; i < 100; i++) {
                 test[i] = null;
           }
           test = null;
     }

     //释放方法二
     private void test_release_total(){
           test = null;
     }

     private void playing_run() {
           if (m_keyState == KEY_UP){
     //按了上键,采用释放方法一
                 test_release_every();
           }else if (m_keyState == KEY_DOWN){
                 //按了下键,采用释放方法二
                 test_release_total();
           }else if (m_keyState == KEY_LEFT){
                 test_init();
           }
           m_keyState = 0;
     }

     //在屏幕上打印内存使用情况      
     long mem_low = 210000;
     private void show_free() {
           long mem = Runtime.getRuntime().totalMemory() -
                           Runtime.getRuntime().freeMemory();
           if (mem_low > mem) {
                 mem_low = mem;
           }
           g.setColor(0xff0000);
           g.drawString(Long.toString(mem)+"--"+Long.toString(mem_low), 0, 32,
                              0);
     }

数据:
真机器测试数据 内存最低值
1 null释放
int类型
test = new int[100][100];
普通   180.9K
every 19.7K
total 19.9K

string类型
test = new String[100][100];
普通   180.9K
every 19.9K
total 19.9K

2 new 的问题
改成 test = new String[100][100];
普通 61.4K
如果再按 ,提高一倍左右 110-140K之间
再按,再提高一倍左右 180多

小结:
1 粗矿与细致的释放,效果差不多!
2 没有释放就new,瞬间会制造两倍数据,以后会被回收掉

Tags:   

Comments list

Leave a Comment

Name
Content
Verification Type the characters you see in the picture below