黑马程序员技术交流社区
标题:
关于内存溢出
[打印本页]
作者:
yjsf216
时间:
2015-3-8 22:55
标题:
关于内存溢出
遍历所以目录打印出来,即使目录层很多也不会溢出,
public class FileDemo{
public static void main(String[] args){
File dir= new File("d:\\work");
showDir(dir);
}
public static void showDir(File dir){
System.out.println(dir);
File[] files= dir.listFiles();
for(int x=0; x<files.length; x++){
if(files[x].isDirectory())
showDir(files[x]);
else
System.out.println(files[x]);
}
}
}
复制代码
而求二进制
static void toBin(int num){
if(num>0){
toBin(i/2);
sop(i%2);
}
}
复制代码
toBin(999999):就会溢出会内存溢出?
作者:
doomsday
时间:
2015-3-8 23:09
本帖最后由 doomsday 于 2015-3-8 23:10 编辑
遍历目录的时候,是一级一级的往下遍历,至到最底层,最底层遍历完了就上层,接着遍历,递归返回遍历的时候new的对象会跟着在内存中消失,而目录最长的也没多少层吧(至少我的电脑上10层的也不多),new的对象就没多少
求二进制的时候,是一直除2直到除不下的时候为止,递归时new的对象才慢慢的在递归返回时从内存中清除,999999/2得除多少回啊,得new多少个对象啊
作者:
yjsf216
时间:
2015-3-8 23:16
但是目录中的是树形结构啊,这样也会很多的啊?
作者:
fantacyleo
时间:
2015-3-8 23:21
没有溢出,运行正常。另外即便你给的参数是long类型的最大值也不可能溢出,因为那仅仅递归63次
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2