中文

哪部分堆内存有用?提高堆存活性分析

编程语言 2024-08-26 v1

摘要

随着堆中分配数据结构大小的增长,了解堆内存实际使用的重要性日益凸显,这对于最小化缓存缺失和回收未使用内存至关重要。针对堆位置无名称的静态分析困难重重。使用分配位置命名会创建极少的区分,使识别未使用的已分配堆位置困难。使用访问图进行堆存活性分析通过两种方式解决此问题:(a) 使用无存储的堆内存模型,通过访问路径命名位置;(b) 将访问路径的无限集合(作为正则语言)表示为有限自动机。我们提高了堆存活性分析的可扩展性和效率,通过使用确定性自动机并最小化别名访问路径在语言中的包含来减少计算的堆存活信息。实际上,我们的现场、流、语境敏感的存活性分析在 SPEC CPU2006 基准测试中扩展至36 kLoC(现有分析仅扩展至10.5 kLoC),在效率方面提升了至99%。对于某些基准测试,我们的技术在计算的存活访问路径数量上实现了数十倍的减少,范围从2倍到100倍(以存活访问路径数量计),而不损害严谨性。

关键词

引用

@article{arxiv.2408.12947,
  title  = {Which Part of the Heap is Useful? Improving Heap Liveness Analysis},
  author = {Vini Kanvar and Uday P. Khedker},
  journal= {arXiv preprint arXiv:2408.12947},
  year   = {2024}
}