I am running a server with 3 GB of JVM heap space and I am running the JVM on an amazon EC2 large instance with about 7.7 GB of memory. However when I hit pmap of my JAVA process then I see a lot(~40-50) of 64-MB blocks of memory allocated which kills my process. I searched about the memory that JAVA uses outside the heap space, I got answers as thread stacks, JNI allocation etc. The thread allocations are just 1 MB so this cannot be it. I am not using any JNI code in my process. The only library I am suspicious is ZMQ for JAVA which might be doing the JNI calls. My Java process does a lot of IO on sockets, so I looked up the socket memory as well. Even that is < 50 MB. So what exactly is taking 40-50 blocks of 64-MB each summing greater than 3 GB.