Python 3 types in the wild: A tale of two type systems
Ingkarat Rak-Amnouykit, Daniel McCrevan, et al.
DLS 2020
Modern garbage collectors partition the set of heap objects to achieve the best performance. For example, generational garbage collectors partition objects by age and focus their efforts on the youngest objects. Partitioning by age works well for many programs because younger objects usually have short lifetimes and thus garbage collection of young objects is often able to free up many objects. However, generational garbage collectors are typically much less efficient for longer-lived objects, and thus prior work has proposed many enhancements to generational collection. Our work explores whether the connectivity of objects can yield useful partitions or improve existing partitioning schemes. We look at both direct (e.g., object A points to object B) connectivity. Our results indicate that connectivity correlates strongly with object lifetimes and deathtimes and is therefore likely to be useful for partitioning objects.
Ingkarat Rak-Amnouykit, Daniel McCrevan, et al.
DLS 2020
Jason Tsay, Alan Braz, et al.
Empirical Software Engineering
Byeongcheol Lee, Martin Hirzel, et al.
OOPSLA 2009
Todd Mytkowicz, Peter F. Sweeney, et al.
MICRO 2007