Browse Prior Art Database

A Scheme for On-line Adaptation of Runtime Memory Management

IP.com Disclosure Number: IPCOM000020392D
Original Publication Date: 2003-Nov-19
Included in the Prior Art Database: 2003-Nov-19
Document File: 5 page(s) / 61K

Publishing Venue

IBM

Abstract

In this note a new dynamic on-line based technique for capturing and using heap objects properties (behaviors) is described. The properties are associated with the objects allocation sites which enable on-line adaptive changes of objects allocation polices. Among the properties that may be captured are: globallity, actual thread sharing, lifetime, locality and more. The results can be used in many types of collectors or other run time components.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 20% of the total text.

Page 1 of 5

A Scheme for On-line Adaptation of Runtime Memory Management

Introduction Traditional solutions to performance optimization based on objects behavior can be classifid into three types: (i) The programmer tries its best directly in the code. In this approach the programmer needs knowledge on both objects usage and the memory management policy. (ii) The compiler applies its optimizations statically during compilation phase. Static analysis is conservative in nature. In addition, the analysis is time consuming and may not be suitable during program runtime as the case in JVMs. (iii) Compiling with profile information relies less on static analysis but consumes time and space when data is collected and during training runs.

    With the increase of resources consumed by the run time system (e.g. in the JVM) a new scheme of optimization is emerging. This dynamic/adaptive based scheme can be tuned to improve run time system behavior. In this note I present a new on-line adaptive scheme for improving run time memory management performance.

Related Work Some adaptive based techniques only compute new thresholds values in generational GC, e.g. [4, 1]. Barrett and Zorn [2] keep object's birth, and compute \threatening boundary" at each collection cycle in their generational GC. The Hotspots JVM enumerates statements executions to decide on Jit invocation. The scheme closest to this invention is by Harris [3]. Harris uses his scheme in generational GC (GGC) for pre-tenuring objects that are predicted to have long lifetime. The similarity between the two schemes is that both have some method to track objects. In Harris method a new weak reference object is generated for each tracked object. This weak object is used for collecting statistics on the object (a log of events). This method does not use such weak objects and does not generate statistic logs. In Harris scheme, the statistics is gathered and processed during GC. Such a processing phase is not required in this scheme.

    The draw backs of Harris scheme are: extra time overhead during object creation (creating an extra object - requesting for extra space, inserting in hash table, and manipulating the weak references linked list), extra space (a new object per each sampled object), overhead on GC during collection (processing weak references list), relying on JIT for recompiling during a policy change. In his current work Harris collects information only during objects creation and GC time (access to objects are not traced). His mechanism for selecting the sampled objects is arbitrary with respect to pre-tenuring aspects (sample an object which over ow the LAB - local allocation buffe).

    In this scheme, only for some properties we need a small (word or two) extra space per sampled object. For most of the properties the automation of the allocation site will suffice.

The Scheme

    The scheme has two main parts: dynamic generation of a new policy for objects allocation and run time adaptation of the...