Docela silena aplikace, mit moznost, radeji bych ji prepsalNevim jestli v Jave existuje neco jako Valgrind pro ELF binarky, zkus se podivat.
Ke tvym zjistenim: ano, u 64-bit mas dvojnasobnou velikost pointeru a jine zarovnavani instrukci, mnozstvi "ztracene" pameti se ale lisi aplikace od aplikace, prumerne 10-15%. U 32-bit userspace aplikace s 64-bit kernelspace jsi omezeny adresovatelnymi 4GB na proces... Pokud se nepletu, Java VM se sdili, tudiz se nikdy nedostanes pres 4GB u 32-bit JRE. Ale nezda se mi to.
Omezeni systemovych prostedku se da taky resit pres ulimit, coz ti ale v pripade sdilene VM nepomuze.
Nejsem Javista, nicmene muzes vyzkouset jine JVM - stary Blackdown (konci na 1.4.2), nove OpenJDK/IcedTea (6 a nejaky draft 7), IBM ma asi taky nejakou svou VM a pak teoreticky GCJ/ECJ? (jestli to nejsou jen prekladace bez runtime VM). Kazda VM je jinak optimalizovana a mohla by pomoct vyresit tve problemy. V ruznych distribucich se prepinani system/user Java VM resi jinak, v Gentoo je na toto eselect. Chce to trochu experimentovat.
Dalsi hint: castejsi volani garbage collectoru behem behu asi nepomuze, co?
Poslednim resenim, nad kterym muzes uvazovat, je virtualizace, prip. clusterovani pro maximalni vyuziti dostupnych prostredku.