JAVA大对象优化_java性能优化 - afeek的个人空间 - OSCHINA - 中文开源技术交流社区...

1.JVM 管理两种类型的内存:堆内存(heap),栈内存(stack),

堆内在主要用来存储程序在运行时创建或实例化的对象与变量.

而栈内存则是用来存储程序代码中声明为静态(static)(或非静态)的方法.

2.JVM 中对象的生命周期:

创建阶段,应用阶段,不可视阶段,不可到达阶段,可收集阶段,终结阶段,释放阶段

3.避免在循环体中创建对象,即使该对象点用内存空间不大.

for(int i=0;i<10000;++i){

Object obj = new Object();

System.out.println("obj="+obj);

}

应改成

Object obj = null;

for(int i=0;i<10000;++i){

obj = new Object();

System.out.println("obj="+obj);

}

4.软引用的主要特点是具有较强的引用功能.只有当内存不够的时候,才回收这类内存,因此在

内存足够的时候,它们通常不被回收.它可以用于实现一些常用资源的缓存,实现Cache 的功能

A a = new A();

SoftReference sr = new SoftReference(a);

a = null;

if(sr !=null){

a = sr.get();

}else{

a = new A();

sr = new SoftReference(a);

}

5.弱引用对象与Soft 引用对象最大不同就在于:GC 在进行回收时,需要通过算法检查是否回

收Soft 引用对象,而对于Weak 引用对象,GC 总是进行回收.

A a = new A();

WeakReference wr = new WeakReference(a);

a = null;

if(sr !=null){

a = wr.get();

}else{

a = new A();

wr = new WeakReference(a);

}

6.共享静态变量存储空间.

7.有时候我们为了提高系统性能,避免重复耗时的操作,希望能够重用一些创建完成的对象,利

用对象池实现.类似JDBC 连接池.

8.瞬间值,序列化对象大变量时,如果此大变量又没有用途,则使用transient 声明,不序列化此变

量.同时网络传输中也不传输.</

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值