If you want to discover exactly how many Objects you can store in your JVM with its current memory configuration this little functional style method might help.
public void testChop() {
// -Xmx=256m
//assertEquals(33554433, between(1, Integer.MAX_VALUE));
// -Xmx=1966m
assertEquals(343535293, between(1, Integer.MAX_VALUE));
}
public int between(int from, int to) {
if ((to - from) <= 1)
return (to);
int i = from + ((to - from) /2);
try {
Object[] a = new Object[i];
a[1]="1";
a=null;
return (between(i, to));
} catch (OutOfMemoryError e) {
return (between(from, i));
}
}
Another thing to note is the speed that this runs at: memory allocation can be very slow.
Obviously, in hindsight, this routine will always take 30 steps.
No comments:
Post a Comment