This sounds counterintuitive, but 64-bit Java uses more memory than 32-bit Java for the same data.
"Can't load IA 32-bit .dll on a AMD 64-bit platform" 32-bit java