我们公司的一道面试题

jobenc 2006-08-24 05:32:43
阅读以下代码:
Image[] img=new Image[10];
for(int i=0;i<img.length;i++){
img[i] =Image.createImage("/res/"+i+".png");
}
img=null;
以上代码在执行过后,是否释放了堆栈空间?请说明理由,如果没有释放,写出正确的释放方法。
...全文
2098 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
J_Vector 2006-11-10
  • 打赏
  • 举报
回复
img只是指针~
jackxing 2006-11-09
  • 打赏
  • 举报
回复
mark
hackangcn 2006-11-09
  • 打赏
  • 举报
回复
题目还是不错的
pork 2006-11-07
  • 打赏
  • 举报
回复
这里Image类肯定指的是MIDP中javax.microedition.lcdui.Image吧
边城狂人 2006-11-04
  • 打赏
  • 举报
回复
Java的Image类没有createImage方法,谁知道你们自己写的Image需要不需要最后调用dispose之类的方法来释放资源呢?
wanglianzhong3d 2006-11-04
  • 打赏
  • 举报
回复
NULL需要,但应根据具体的手机确定是否需要调用gc。 例如samsung的手机就不要用gc
kabo1986 2006-10-10
  • 打赏
  • 举报
回复
学习~
baselive 2006-10-09
  • 打赏
  • 举报
回复
楼主的答案呢?
z5770720 2006-10-09
  • 打赏
  • 举报
回复
用一个函数撒!
laitaogood 2006-10-08
  • 打赏
  • 举报
回复
释放内存空间用system.gc();
把img置为 NULL只是接触了对象的 引用
Gamehal 2006-10-07
  • 打赏
  • 举报
回复
在JAVA里面应该不用操心这个问题吧?
n5 2006-10-07
  • 打赏
  • 举报
回复
这个问题里有两个问题
(1)img=null;能不能清掉img数组里图片对象的引用
(2)执行gc的问题

第一个问题,img = null ;后应该没有到原img数组里的那些图片的引用了,也就是没有办法再引用这些内存中的对象了,所以gc应该可以把他们都列为可回收的对象了。所以我觉得没必要再便利数组逐个清除引用。否则对一个复杂的对象,含若干引用,你难道还要逐个清除?

第二个问题,不好说清。一般J2ME设备上gc的实现也不同。但基本的还是可以主动掉用一下的,当然有人说掉之后还要yield或sleep什么的,都要看情况了。
但有一点是肯定的,显式的调用gc不是必要的,但清空引用是必要的。
贝壳鱼 2006-10-07
  • 打赏
  • 举报
回复
img = null; //清空栈内存

heap上的对象,JAVA会自己收集的
goodegg5519 2006-10-05
  • 打赏
  • 举报
回复
这个题目啊!!呵呵~~不错!
冰个茶 2006-10-04
  • 打赏
  • 举报
回复
Image[] img=new Image[10];
for(int i=0;i<img.length;i++){
img[i] =Image.createImage("/res/"+i+".png");
}
img=null;
以上代码在执行过后,没有释放堆栈空间.
正确的释放方法是
if( img != null ){
for(int i=0;i<img.length;i++){
if( img[i] != null ){
img[i] = null;
}
}
img=null;
}


numen_wlm 2006-09-30
  • 打赏
  • 举报
回复
了解
Koalaly 2006-09-30
  • 打赏
  • 举报
回复
没有释放,,
王旺旺旺 2006-09-05
  • 打赏
  • 举报
回复
java里面无所谓的吧。
wangx1949 2006-09-03
  • 打赏
  • 举报
回复
Image[] img=new Image[10];
for(int i=0;i<img.length;i++){
img[i] =Image.createImage("/res/"+i+".png");
}
img=null;

在这之后调用system.gc()或随便new一个对象应该就可以回收img引用的内存吧
mynet613 2006-09-01
  • 打赏
  • 举报
回复
我比较认为是
for(int i=0;i<img.length;i++){
img[i] =null;
}
img = null;

img = null;解除了对对象的引用,栈内存已经清空;堆内存中Image[] img对象并没有马上清空;System.gc();并不要显示调用,如果你的对象并没使用的情况下;
他会自动调用

加载更多回复(9)

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧