JVM GC

Over the past couple of weeks I have digging into a JVM performance issue, specifically a process which would start off running fast and then slow down at some point.

Tracking the performance of the GC I was able to figure out that the tenured generation was getting swamped by a large allocation that would not let go causing GC to go into full GC over and over again thereby killing performance. Indeed the library I was using to parse sentences would allocate space in proportion to the size of the sentence, an always allocate up and never down, so over time it was inevitable that it would swamp the tenured generation.

Effectively the JVM was behaving like an operating system with too little memory and trashing.

The answer obviously is to prevent these unbounded allocations from happening.

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: