vettori, I noticed in your thread dump that a finalizer thread was running. What percentage of your allocated objects have finalizers? And what are the finalizers doing? Most of the other threads appeared to be simply waiting.
Usually, taking a single thread dump is insufficient. You have to take multiple dumps in succession and examine the threads that changed state.
I repeat my earlier suggestion to enlist professional help.
philjboss, it is considered rude to hijack someone else's post with your own unrelated question. If you care to start a new post and repeat your question there, I will answer (though I warn you that you might not like my answer...).