 <p>Java has a pool of Integer constants between -128 and 128. Integer values in that range don't take up any additional space.</p> <p>Integer values outside that range take as much space as an object header + 4 bytes. How big that is depends on your JVM and settings. Look at <a href="http://sourceforge.net/projects/sizeof" rel="nofollow">http://sourceforge.net/projects/sizeof</a> or <a href="https://code.google.com/p/memory-measurer" rel="nofollow">https://code.google.com/p/memory-measurer</a> if you want to programmatically measure the size.</p> <p>Edit: Note that <code>Integer i = new Integer(10);</code> will <strong>not</strong> use the object constant pool. That's why you should always use <code>Integer.valueOf(x)</code> instead of <code>new Integer(x)</code> when instantiating. Note also that autoboxing already does the right thing, so <code>Integer i = 10</code> will also use the constant pool.</p>