Home > common practice, Performance > Java Performance Tuning with maximizing Integer.valueOf(int)

Java Performance Tuning with maximizing Integer.valueOf(int)

With

Integer.valueOf(intValue)

http://java.sun.com/javase/6/docs/api/java/lang/Integer.html#valueOf%28int%29
or auto boxing(uses internal a valueOf too) the cached Integer values will be used if they are between -127 and +128.

Now I found coincidentally(by looking at the source) on a Java feature or more exactly on a property. With that property you can tune the maximum of the internal Integer cache.

The Properties is called ‘java.lang.Integer.IntegerCache.high’. For each number in the range a Integer value will be created at the beginning of using Integer (it’s initialized in a static).

The feature is only available since some JDK Update versions (I don’t know exactly which).

So you have to ask yourself, can you benefit from a higher cache or are the numbers normally not used?

You save the following memory, if the number is in you cache:

  • the numeric value and its architecture padding (e.g. int needs 8 bytes on 64bit architecture, if there are no other primitive numbers to combine it with)
  • the header of an object, which is 2xWORD. On 32bit 2×4 bytes, on 64bit, 2×8 bytes.

Conclusion:
Always use Integer.valueOf. “new Integer” is obsolete.
Do you need numbers higher than 128 often in the application? Is it worth creating the overhead for each Integer between -127 and your max number?
If a value is mandatory you should use a primitive int value, because the value is saved directly with no reference and object overhead.

Update1:

More details on the memory usage.

About these ads
  1. 2014/03/09 at 02:40

    Very useful thanks :)

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

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

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: