Java GC overhead limit exceeded - Custom solution needed
The really critical vm arg is -Xmx1024m
, which tells the VM to use up to 1024 megabytes of memory. The simplest solution is to use a bigger number there. You can try -Xmx2048m
or -Xmx4096m
, or any number, assuming you have enough RAM in your machine to handle it.
I'm not sure you're getting much benefit out of any of the other VM args. For the most part, if you tell Java how much space to use, it will be smart with the rest of the params. I'd suggest removing everything except the -Xmx
param and seeing how that performs.
A better solution is to try to improve your algorithm, but I haven't yet read through it in enough detail to offer any suggestions.
As you are saying that the data size is really very large, if it does not fit in one computers memory even after using -Xmx
jvm argument, then you may want to move to cluster computing, using many computers working on your problem. For this you will have to use Message Passing Interface (MPI
).
MPJ Express
is a very good implementation of MPI
for Java, or in languages like C/C++ there are some good implementations for MPI
existing like Open MPI
and mpich2
. I am not sure whether it will help you in this situation, but certainly will help you in future projects.