Silk:基于运行时指导的内存管理技术,用于降低移动设备上应用程序运行时的卡顿现象
《ACM Transactions on Architecture and Code Optimization》:Silk: Runtime-Guided Memory Management for Reducing Application Running Janks on Mobile Devices
【字体:
大
中
小
】
时间:2025年11月08日
来源:ACM Transactions on Architecture and Code Optimization
编辑推荐:
Silk通过 runtime-guided内存管理优化解决移动设备内存抖动问题:针对应用线程高频访问小对象导致的页面回收误判,Silk通过识别对象热度实现精准页面分组和冷热对象缓存;同时协调GC线程与内核LRU管理,优先回收GC冷对象减少交换。实验表明swap in减少45.4%,应用卡顿降低55.3%,性能与现有方案相当。
摘要
作为一种经济有效的方法来扩展移动设备的内存,交换(swap)有望提升应用程序的性能。然而,本文发现了当前移动设备内核内存管理在处理用高级语言开发的应用程序时存在的两个局限性。首先,应用程序线程访问的数据基于Android运行时(ART)堆中的小对象。实验结果表明,一个页面内包含多个热度不同的对象。现有的基于页面的内核内存管理无法准确识别页面内对象的热度,错误地优先回收“热”对象,这导致“热”对象的交换次数增加,从而引起应用程序运行不稳定。其次,ART使用垃圾回收(GC)来回收无效对象,但内核基于LRU(最近最少使用)的内存管理机制无法了解GC工作集内对象的热度分布。这导致“冷”对象的回收被延迟,而“热”对象频繁被交换,进而引发内存抖动并显著降低应用程序的运行性能。
为了解决这些问题,我们提出了Silk这一由运行时引导的内存管理方案。Silk包含两个组件:1) 针对应用程序线程,它能够识别应用程序工作集中的对象热度,并将具有相似热度的对象分组到ART的同一页面中,将“热”对象缓存到内存中以减少交换次数;2) 针对GC线程,它能够识别GC工作集中的对象热度,并指导内核优先回收“冷”对象,从而防止内存抖动。我们在Android移动设备上实现了Silk,并用不同类别的流行应用程序对其进行了评估。实验结果表明,与现有技术相比,Silk将交换量减少了45.4%,同时将应用程序运行不稳定的情况减少了55.3%。此外,Silk在加速应用程序切换方面也与现有技术达到了相当的水平。
生物通微信公众号
生物通新浪微博
今日动态 |
人才市场 |
新技术专栏 |
中国科学人 |
云展台 |
BioHot |
云讲堂直播 |
会展中心 |
特价专栏 |
技术快讯 |
免费试用
版权所有 生物通
Copyright© eBiotrade.com, All Rights Reserved
联系信箱:
粤ICP备09063491号