性能优化——内存优化

一、什么是内存泄露
内存不在GC掌控之内了。就是当一个对象已经不需要再使用了,本该被回收时,而又另外一个正在使用的对象持有它的引用从而导致对象不能被回收。这种导致了本该被回收的对象不能被回收而停留在堆内存中时,就导致了内存泄露。
二、内存分配的几种策略
1、静态存储区:内存在编译期间就分配好,这块的内存在整个运行期间都一直存在。它主要存放静态数据、全局的static数据和一些常量
2、栈式的
在执行函数(方法)时,函数一些内部变量的存储都可以放在栈上面创建,函数执行结束之后就会自动被释放掉。栈内存的运算速度很快,因为内置在处理器里面,但是容量有限。
3、堆式的
也叫动态内存分配。有时候可以通过malloc或者new来申请分配一块内存。在C/C++可能需要自己负责释放(java里面直接依赖GC机制)。在C/C++里面是可以自己掌控内存的,需要有很高的素质来解决内存的问题。java需要编程的时候注意自己良好的编程习惯。
区别:
堆是不连续的内存区域,堆空间比较灵活,也比较大。栈内存是一块连续的内存区域,大小由操作系统决定。堆管理很麻烦,频繁的new/remove会造成大量的内存碎片,这样就会慢慢导致效率低下;对于栈,他先进后出,进出不会产生碎片,运行效率高且稳定。
public class Main{
	int a = 1;//引用和对象都存在于堆中
	Student s = new Student();//引用和对象都存在于堆中
	public void XXX(){
		int b = 1;//栈里面
		Student s2 = new Student();//引
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值