黑马程序员技术交流社区

标题: 怎么样会节省代码所占内存 [打印本页]

作者: 肖亚光    时间: 2013-1-5 15:14
标题: 怎么样会节省代码所占内存
本帖最后由 可乐咖啡厅 于 2013-1-9 13:38 编辑

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

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


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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2