A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 肖亚光 中级黑马   /  2013-1-5 15:14  /  2032 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 可乐咖啡厅 于 2013-1-9 13:38 编辑

代码如果不经过优化,一段大的代码会有可能出现内存溢出的异常

新产生一个变量
比如String,long,int一个变量、
在代码中的循环体内每次循环都新建一个对象 跟 设一个全局变量然后再每次循环的时候给变量赋值、
哪个方法会节省代码所占内存呢
(java编程)

评分

参与人数 3技术分 +2 黑马币 +3 收起 理由
金鑫 + 3 老毕的视频中有讲过的吧,鼓励一下.
杨雯雯 + 1 神马都是浮云
舒远 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
这肯定是把变量定义在循环体内节省内存,因为循环体就是一个局部代码块,定义在循环体内的变量就是一局部变量,只在该代码块内有效。循环结束后,该变量就被销毁,不再占用内存空间
如果定义全局变量,他就会一直存在,一直占有内存空间。
回复 使用道具 举报
你好
循环次数多的话定义在循环外面,因为定义在里面要重复的进栈出栈,消耗内存资源。
如果循环次数少的话可以定义在里面,循环结束自动释放,生命周期短。
回复 使用道具 举报
金鑫 发表于 2013-1-5 15:20
这肯定是把变量定义在循环体内节省内存,因为循环体就是一个局部代码块,定义在循环体内的变量就是一局部变 ...

循环结束后,变量会马上销毁还是要等待一段时间后自动销毁呢?
回复 使用道具 举报
涉及到这个问题最好还是用for循环吧,  for(表达式1;表达式2;表达式3){}
其中表达式1可以进行定义变量,赋值等操作,而且每一次循环不会建立新的对象,仅仅是赋值,这就类似是外部变量一样,
但是它的作用域是在for的花括号范围以内,当for循环执行完以后会自动清除,生命周期短,所以更能够节省内存。
回复 使用道具 举报
毕大说,能局部的不全局。省内存。用完就扔一边销毁。
像遍历集合时,用for比用while好。因为for(int i=0;..)这个i变量定义在了里面,而while的要定义在外面。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马