JRockit内存分配调优
如Memory Management Guide中所述,JRockit使用了thread local area (TLA)分配以避免直接从Java堆分配所有内存所带来的瓶颈。一个TLA的默认大小是2 Kb,这对于一个分配大量内存的Java程序来说太小了,尤其是在JRockit进程使用许多CPU时。此外,JRockit还经常直接从堆分配大型对象。默认情况下,大型对象被定义为大于2 kB的对象,通常是数组。这个常量对于分配大量大型数组的应用程序来说太小了,在涉及到XML时,大型数组并不罕见。
如果这些常量对于应用程序来说太低,那么内存分配就会成为一个瓶颈。在这种情况下,调优这些常量就会产生显著的性能提升(提升5-10%并不罕见)。
Tags:JRockit, TLA, JVM