java 局部变量频繁gc_java – 使用局部变量与字段对GC的影响

我在onDraw()方法的调用堆栈中有一个3级的方法.它被称为数百次,有时每次重绘数千次.我已经对onDraw()方法进行了大量的分析,我可以看到以下方法占总数的14%,所以绝对值得一看.我需要在压缩缩放和拖动操作期间提高帧速率.

private void getVisiblePointsFromPath(){

double longRads = longitude * (Math.PI / 180);

double latRads = latitude * (Math.PI / 180);

...

}

当方法退出并且双精度超出范围时,我认为它们符合GC的条件,尽管我认识到这可能发生时是非确定性的.

这样做有什么好处:

public class GisView extends ImageView{

private double longRads;

private double latRads;

private void getVisiblePointsFromPath(){

longRads = longitude * (Math.PI / 180);

latRads = latitude * (Math.PI / 180);

...

}

}

我假设这个习惯用法会导致双打被取消,然后在每次传递时重新分配,但不会产生额外的垃圾,从而减少了我造成的GC数量.或者VM比那更聪明?

请注意,我的问题本身并不是“哪个更快”,而是关于哪个可能导致GC减少.我可以测量速度差异,但我不太了解Dalvik VM和Android GC来预测哪个导致更少的垃圾.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值