问题描述:
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,瞬间会制造两倍数据,以后会被回收掉
2006-01-06 15:35:15
Views(1323)
Comments