Adaptive code unloading for resource constrained jvms
1 / 22

Adaptive Code Unloading for Resource-Constrained JVMs - PowerPoint PPT Presentation

  • Uploaded on

Adaptive Code Unloading for Resource-Constrained JVMs. ACM SIGPLAN, 2004 Presented by Mithuna Soundararaj. Outline. Introduction Motivation and Contributions Compile-only and Interpreter-only JVM Code Unloading What to Unload? When to Unload? Results. Introduction.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' Adaptive Code Unloading for Resource-Constrained JVMs' - yoko-colon

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Adaptive code unloading for resource constrained jvms

Adaptive Code Unloading for Resource-Constrained JVMs


Presented by

Mithuna Soundararaj

University of Nebraska-Lincoln


  • Introduction

    Motivation and Contributions

    Compile-only and Interpreter-only JVM

  • Code Unloading

  • What to Unload?

  • When to Unload?

  • Results

University of Nebraska-Lincoln


  • Java Virtual machine extension for adaptive code unloading.

  • Reduces memory requirement imposed by compile-only JVMs.

  • The extension feature, an unloader uses execution behavior to adaptively determine *when* and *what* code to unload.

  • Unloading strategies used reduces the code size, in turn reducing the execution time and memory.

University of Nebraska-Lincoln


  • To reduce the overhead of memory consumed by compiled code which increases the cost of memory management.

  • To adaptively balance not storing any code and caching all generated code according to the dynamic memory availability.

University of Nebraska-Lincoln

Compile only vs interpreter jvm
Compile-only Vs Interpreter JVM

  • Compile-only JVM

    -Uses device resources more efficiently.

    -Higher quality code.

    -Code reuse and optimization.

  • Interpreter-only JVM

    -Simple to interpret.

    -No memory overhead

University of Nebraska-Lincoln

Code unloading opportunities
Code Unloading opportunities

  • Large amount of executed code used only during program start up( initial 10% of execution time).

  • Code that remains in the system and is never invoked after start up.(shorter lifetimes).

  • Long-lived methods executed in-frequently during their lifetime.

University of Nebraska-Lincoln

Code unloading
Code Unloading

  • To exploit the available code unloading opportunities and to relieve the memory pressure imposed by compile-only JVMs, they have developed an extensible framework for the implementation of strategies that decide

    -What to unload?

    -When to unload?

    -Balance between memory pressure and recompilation overhead.

University of Nebraska-Lincoln

What to unload
What to Unload?

  • Predicting methods which are unlikely to be invoked in the future.

  • Monitor the execution to identify the methods that have not been recently invoked by

    -Online eXhaustive profiling (OnX)

    -Online Sample-based profiling (OnS)

    -Offline exhaustive profiling (Off)

    -No profiling (NP).

University of Nebraska-Lincoln

What strategies
What strategies

  • Online eXhaustive profiling(OnX)

    Compiler instruments methods setting a mark bit to one every time a method is invoked.

  • Online Sample-Based profiling(OnS)

    Sets the mark bits of the two methods on the top of the invocation stack.

  • Offline Exhaustive Profiling(Off)

    To analyze the behavior of the methods offline

  • No Profiling

    unload all methods that are not currently on the run time stack when unloading occurs.

University of Nebraska-Lincoln

When to unload
When to unload?

  • Timer Triggered Approach

  • Garbage Collection triggered Strategy.

  • Maximum Call Times Triggered(MCT).

  • Code Cache Size Triggered(CS).

University of Nebraska-Lincoln

When strategies
When Strategies

  • Timer Triggered Approach.

    Unloads code at regular intervals

    Does not account for the dynamically changing memory availability.

    Approximates time using thread switch count which occurs every 10 ms.

    Increments count according to time spent in GC.

University of Nebraska-Lincoln

When strategies1
When Strategies

  • Adaptive Garbage Collection Triggered Strategy

    -Unloading trigger of GC invocation count.

    -Frequency of code unloading dynamically adapts to resource behavior.

    -Unloading more frequently when memory is highly constrained but less frequent otherwise.

    -Memory Usage behavior is got from heap residency.

    -At the end of each GC cycle, resource monitor forwards the percentage of execution time that is spent in GC to the unloader so as to adjust the frequency of the unloading sessions.

University of Nebraska-Lincoln

When strategies2
When Strategies

  • Maximum Call Times Triggered(MCT)

    -unloads a method after its final compilation.

  • Code Cache Size Triggered

    -Stores native code bodies in a fixed size code cache, when cache becomes full it is unloaded.

University of Nebraska-Lincoln

Unloading optimized code
Unloading Optimized Code

  • Recompiling an unloaded,previously optimized method affects the balance of re-compilation overhead and performance benefits.

  • Strategies to handle optimized code

    -RO(Reload Optimized methods using the optimization hint).

    -EO(Exclude unloading of optimized methods)

    -DO(Delay unloading of optimized methods)

University of Nebraska-Lincoln



University of Nebraska-Lincoln

Impact on memory footprint
Impact On Memory Footprint

University of Nebraska-Lincoln

Impact on execution performance
Impact On Execution Performance

University of Nebraska-Lincoln


  • Opportunity for dynamically unloading compiled code in JIT-based JVMs for mobile and embedded devices.

  • Adaptively unload dead and infrequently used code to reduce memory consumed and improve performance.

  • When memory is highly constrained,reduction in code size by 61% and execution time of 23% on an average across benchmark programs and JVM configurations.

University of Nebraska-Lincoln

Thank you

Thank You

University of Nebraska-Lincoln