Java高效编程建议

Android里的Java编程,通过java的虚拟机kvm
实现,虽然kvm比Jvm更高效更有效率,但是由
于手机设备资源的有限性,与虚拟机不能进行
内存操作,全部由vm后台进行回收,所以必要
的java高效编程,是程序更有效率的运行的必
要条件。
垃圾回收
  vm里简称gc,对象在new 操作的时候,就在
vm里对对象进行有了分配内存的操作。vm进行
回收是在一定的步骤和算法后才进行回收,其
中,回收的关键在于vm是否可以通过根集合索
引对象。
对象的创建
1 避免在循环体中创建对象,即使对象很小。
2 尽量及时使对象符合垃圾回收标准
3 不要采用过深得继承层次
4 访问本地变量优于访问类中变量(尽量使用
private的变量和方法)
1)
..
for(int i = 0 ;i<10000;i++)
{
 Object obj = new Object();
 System.out.println("obj"+obj);
}
..
以上方法不妥,应该以下方式可以尽量少得创建
对象,减轻vm的回收负担:
..
 Object obj = null;
for(int i = 0 ;i<10000;i++)
{
 obj = new Object();
 System.out.println("obj"+obj);
}
..
public class A
{
 private Hashtable table = new Hashtable
();
public A()
{
//将HashTable对象初始化了2次
 table = new Hashtable();
}
正确方式
public class A
{
 private Hashtable table = new Hashtable
();
//默认的构造方法尽量不要初始化对象
public A()
{
}
}
3 应用阶段
任何默认对象都是强引用(Strong Reference
),对于一些应用对象可以指定他的引用类型
(Soft Reference ,Weak Reference ,使vm
便于处理和回收。
3.1 软引用在内存足够的情况下不回收,但内
存 不够的话,优先回收。实现常用资源的缓冲
,实现cache的功能。
..
A a = new A();
//使用a
..
//使用完a了,将他设置为soft ,并释放强引

SoftReference sr =new SoftReference(a);
a = null ;
..
//下次使用时
if()
{
 a = sr.get();
}
esle{
//GC优于低内存,已释放a,因此需要重新加载
a = new A();
 sr = new SoftReferce(a);
}
...
3.2 弱引用(WeakReference)对于 Soft引用有
很大的不同在于,GC在进行回收时,需要通过
算法判断是否回收Soft引用对象,而对于Weak
引用对象,GC总是直接进行回收。Weak引用更
容易被GC回收。
..
A a = new A();
//使用a
..
//使用完a了,将他设置为weak ,并释放强引

WeakReference sr =new WeakReference(a);
a = null ;
..
//下次使用时
if()
{
 a = sr.get();
}
esle{
//GC优于低内存,已释放a,因此需要重新加载
a = new A();
 sr = new WeakReferce(a);
}
...
4 另外,在使用对象的时候再实现对象,要注
意对象的作用域,作用域越小越好,但对象不
用的时候要像C++里的一样把对象设置成null。
void f()
{
 int i;
 A a= new A();
//类A的对象被创建
//在判断语句之外没有用过a对象
..
if()
{
  //类A的对象a仅在次用到
   a.doSomeThing();
}
..
}
..
高效的书写
void f()
{
 int i;
 
if()
{
  A a= new A();
  //类A的对象被创建
  //类A的对象a仅在次用到
  a.doSomeThing();
  a = null ;
}
..
}
..
 参考 Java优化编程 整理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值