位置: 编程技术 - 正文

ART GC介绍(art+project)

编辑:rootadmin

推荐整理分享ART GC介绍(art+project),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:artog,art going,art+project,art sg,arthrogram,art going,artog,art going,内容如对您有帮助,希望把文章链接给更多的朋友!

学习了Android 4.4 ART的Mark-Sweep(MS)GC。到了Android 5.0,ART增加了对Compacting GC的支持,包括Semi-Space(SS)、Generational Semi-Space(GSS)和Mark-Compact (MC)三种。

总体来说,Compacting GC和Mark-Sweep GC各有优劣。所谓Compacting GC,就是在进行GC的时候,同时对堆空间进行压缩,以消除碎片,因此它的堆空间利用率就更高。但是也正因为要对堆空间进行压缩,导致Compacting GC的GC效率不如Mark-Sweep GC。不过,只要我们使用得到恰当,是能够同时发挥Compacting GC和Mark-Sweep GC的长处的。例如,当Android应用程序被激活在前台运行时,就使用Mark-Sweep GC,而当Android应用程序回退到后台运行时,就使用Compacting GC。

为了达到上述目的,ART运行时内部有Foreground和Background两种GC之分。在ART运行时启动的时候,可以通过-Xgc和-XX:BackgroundGC来指定Foreground GC和Background GC的类型,即具体是哪一种Mark-Sweep GC或者Compacting GC。由于Mark-Sweep GC和Compacting GC所需要的堆空间结构是不一样的,因此,当发生Foreground GC和Background GC切换时,ART运行时需要提供支持,以维护堆空间的正确性。

除了适合后台运行时之外,Compacting GC还适合用在内存分配时。在以往的Mark-Sweep GC时,由于碎片而产生的内存不足问题,是解决不了的,只能让应用程序OOM。但是有了Compacting GC之后,就可以在应用程序OOM之前,再作一次努力,那就是对原来的堆空间进行压缩一下,再尝试进行分配,这样就可以提高成功分配内存的概率。

ART GC介绍(art+project)

从上面的分析可以看出,Compacting GC的最大特点就是会对堆空间进行压缩。这意味着对象在堆空间的位置是会发生变化的。但是对应用程序来说,这种对象位置的变化是要透明的。因此,Compacting GC的最核心挑战就是在保持应用程序逻辑不变和正确的前提下,在需要的时候对对象的位置进行移动。所以在这篇文章里面,我们第一个要介绍的技术就是对象移动技术,接着再在此基础之上,展开对其它技术的介绍。

第一种方案是使用者不是直接引用对象,而是间接引用。这就类&#;于操作系统里面的文件描述符(fd)。我们在调用操作系统接口open打开一个文件的时候,获得的是一个整型的文件描述符。这个文件描述符其实就是一个索引,它索引到内核为每一个进程都创建的一个打开文件表。这个打开文件表里面的每一个项保存的都是一个指向一个打开文件结构体的指针。我们可以把这个打文件结构体看作就一个对象。当这个对象移动时,也就是在另外一个地方重新分配时,只需要将新分配得到的地址重新填入对应的打开文件表的表项就可以了。这对应用程序来说,是完全透明的,因为它是通过打开文件表来间接访问得到对应的打开文件结构体的。

我们可以轻易看出,上述方案的最大缺点就是每次访问对象都需要有额外的开销,也就是影响效率。但是如果我们可以忽略在执行Compacting GC时的这个开销,是不是就可以使用了呢?答案是否定的。由于Foreground和Background两种GC的同时存在,ART内部可能同时存在着Mark-Sweep和Compacting两种类型的GC。如果我们在Compacting GC中使用了该方案,那么也意味着Mark-Sweep GC也必须是要间接地去访问对象。但是这完全是没有必要的,因此ART使用的是第二种对象移动技术,也就是修改对象使用者的引用,使得它无论何时何地,总是直接指向对象的真实地址。

在ART运行时中,对象使用者无非就是位于两个位置,一个是堆,一个栈。因此,当一个对象被移动时,我们只需要找到它在堆和栈上的使用者的位置,那就可以将它们的&#;修改为对象被移动后的新地址,那就达到目的了。

摘至:

Mac下eclipse安装SVN插件 Mac下eclipse安装SVN插件eclipse中最常使用的SVN插件是subclipse,先到subclipse官网:

Genymotion首次运行程序出现错误Installation error: INSTALL_FAILED_CPU_ABI_INCOMPATIBLE 当首次安装好Genymotion后,把Android运用部署到上面运行时,Console控制台会报错:Installationerror:INSTALL_FAILED_CPU_ABI_INCOMPATIBLE,Pleasechecklogcatoutputformoredetails.L

接上:TabHost与RadioGroup结合完成的菜单 布局文件:?xmlversion=1.0encoding=UTF-8?TabHostandroid:id=@android:id/tabhostandroid:layout_width=fill_parentandroid:layout_height=fill_parentxmlns:android=

标签: art+project

本文链接地址:https://www.jiuchutong.com/biancheng/385955.html 转载请保留说明!

上一篇:android ListView之——ArrayAdapter使用

下一篇:Mac下eclipse安装SVN插件(mac版本eclipse 怎么使用)

  • 税后经营净利率什么意思
  • 投资收回的现金
  • 预收账款属于什么科目借贷方向
  • 对外捐赠固定资产属于营业外支出吗
  • 用库存现金支付职工医药费用69元会计人员编制的
  • 个人提供劳务报酬需要到税务局开发票吗?
  • 年底计提是什么意思
  • 技术服务费3%
  • 固定资产加速折旧的方法有哪些
  • 新会计准则下具体会计准则对银行的影响不包括
  • 信用减值损失在利润表怎么填列
  • 独立账户负债核算内容
  • 公司注销后专利还能转让吗
  • 报销 交通费
  • 充值给予的优惠怎么用
  • 居民企业只就其境内全部所得纳税
  • 公司接待考察团需要准备什么
  • 材料盘亏可收回成本吗
  • 跨年发票企业所得税
  • 货车挂靠企业需要交增值税吗?
  • 供应商不给我们开发票,我怎么入账
  • 营改增 贷款服务
  • 所得税汇算有研发费用可以不享受加计扣除吗
  • 公司支付媒体广告费用必须签订合同吗?如果没有签订合同是否不能税前扣除?
  • 通用机打发票能报销不
  • 房地产停车场属于公共配套设施吗
  • 债务重组过程
  • 对公账户网银证书有效期多久
  • 分公司的款汇入总公司得出什么证明
  • 年终奖个人所得税缴纳标准
  • 在线网速测试网站测速工具
  • 开增值税专用发票需要什么资料
  • php mb_convert_encoding
  • 进项发票失控怎么办
  • 建筑业主营业务成本包括哪些
  • 应交所得税和所得税费用的区别计算公式
  • php如何自定义函数
  • php类的使用
  • three.js入门指南
  • 申请代开增值税专用发票有金额限制吗
  • 以前年度损益在报表哪里体现
  • dl.php怎么打开
  • javascript手机上
  • window.eval方法
  • 外管证异地预缴税款是什么意思
  • ps怎么怎么用
  • 开了红字信息表对方没开红票
  • 商业会计与财务会计的相同
  • sqlserver远程连接失败
  • 一次还本付息债券定价公式
  • 小规模纳税人缴纳增值税的会计科目
  • 运输服务属于生活服务吗
  • 帐务处理程序
  • 计提地税会计分录怎么做
  • 所得税纳税年度
  • 企业所得税如何抵扣
  • 一般贸易出口报关的详细流程案例
  • 公司注销其他应付款怎么冲平
  • 员工备用金会计分录
  • 固定资产计提折旧的账务处理
  • 收到上月已付款的材料
  • 税收优惠应计入那个科目
  • 单位给个人转款怎么做账
  • 股权变更产生的税费
  • win7系统ie浏览器打不开
  • 苹果的mac系统
  • Androidannotation使用之@Rest获取资源及用户登录验证(一)
  • jquery的css方法
  • 安卓画图板
  • Python Requests 基础入门
  • python 断言详细讲解用法及其案例
  • maxlength属性设置为0
  • 江西省税务电子官网
  • 国税发票打印汇总怎么弄
  • 朝阳区地方税务局官网
  • 矿产资源税的计税依据
  • 黄金消费税如何缴纳
  • 2021年个税退税条件
  • 贵州省税务局193项业务
  • 奔驰g500落地多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设