变量的存储位置和程序的效率问题
2011-03-24 16:04
316 查看
1.寄存器:
最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.循环时候使用的计数器等可能被拿来做寄存器存储
2. 栈:
存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象 存放在常量池中。)
3. 堆:
存放所有new出来的对象。
4. 静态域:
存放静态成员(static定义的)
5. 常量池:
存放字符串常量和基本类型常量(public static final)。
6. 非RAM存储:
硬盘等永久存储空间
jvm的垃圾回收针对的是堆中的数据。
减少内存使用的内存资源的方法:
1.垃圾回收的使用。
垃圾回收机制是由系统控制的,不一定马上按照自己的想法执行,比较难于控制。
像image等变量不是用的时候设置为null 系统回收
2.许多人喜欢,构造方法中进行对象的初始化,这个存在的风险就是在new的时候内存的使用达到了峰值。
使用的地方进行初始化。
3.StringBuffer 代替String 若一个字符串需要反复的进行拼接等操作 建议使用
4.使用静态常量去掉重复的拷贝和不必要的重复代码
5.不要过度设计。我认为程序设计的目的:是用最简单的方式解决问题。不是在比谁牛逼,写的代码高深。用最简单的逻辑解决复杂 的问题,巧妙的设计更使我兴奋。看见那些复杂的三元运算符感觉很费解。
减少cpu的消耗问题:
1.不在循环中定义变量,尤其是有的线程里面 不知道它要循环多少次了。你要是一不小心加进去个变量的定义,cpu多遭罪啊?
2.变量对象的重复利用。
3.用内存换取速度,定义中间变量,减少不必要的运算开支
最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.循环时候使用的计数器等可能被拿来做寄存器存储
2. 栈:
存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象 存放在常量池中。)
3. 堆:
存放所有new出来的对象。
4. 静态域:
存放静态成员(static定义的)
5. 常量池:
存放字符串常量和基本类型常量(public static final)。
6. 非RAM存储:
硬盘等永久存储空间
jvm的垃圾回收针对的是堆中的数据。
减少内存使用的内存资源的方法:
1.垃圾回收的使用。
垃圾回收机制是由系统控制的,不一定马上按照自己的想法执行,比较难于控制。
像image等变量不是用的时候设置为null 系统回收
2.许多人喜欢,构造方法中进行对象的初始化,这个存在的风险就是在new的时候内存的使用达到了峰值。
使用的地方进行初始化。
if(img == null){ //初始化操作 }
3.StringBuffer 代替String 若一个字符串需要反复的进行拼接等操作 建议使用
4.使用静态常量去掉重复的拷贝和不必要的重复代码
5.不要过度设计。我认为程序设计的目的:是用最简单的方式解决问题。不是在比谁牛逼,写的代码高深。用最简单的逻辑解决复杂 的问题,巧妙的设计更使我兴奋。看见那些复杂的三元运算符感觉很费解。
减少cpu的消耗问题:
1.不在循环中定义变量,尤其是有的线程里面 不知道它要循环多少次了。你要是一不小心加进去个变量的定义,cpu多遭罪啊?
2.变量对象的重复利用。
3.用内存换取速度,定义中间变量,减少不必要的运算开支
相关文章推荐
- 程序中各种变量的存储位置和程序返回变量的问题
- iOS开发程序中各种变量的存储位置和程序返回变量的问题
- 程序中各种变量的存储位置和程序返回变量的问题
- 程序中各种变量的存储位置和程序返回变量的问题
- 程序中各种变量的存储位置和程序返回变量的问题
- iOS开发程序中各种变量的存储位置和程序返回变量的问题
- The NOTE of learning ASP.NET [10] 关于.NET整型与浮点型变量使用上的效率和存储问题
- C++基础知识——变量存储位置
- 交换两个变量效率问题
- C语言中变量的位置与程序优化
- 解决在url中传递js变量到java程序中出现乱码问题(转自http://www.blogjava.net/fine)
- 存储过程变量的问题
- java 中变量存储位置的区别
- 程序调用查询数据存储过程的问题
- java中变量的存储位置
- C++中变量生存期,作用域,存储位置总结
- java基础 int变量自增 效率问题
- [转]C#中Win程序画面初始位置问题
- java各变量的存储位置
- 变量和值在内存中的存储位置