それがうまくいかないのも不思議ではありません。スレッドあたりのスタックサイズは128Mbですが、全体で4096Mbしかありません。これにより、40スレッドを使用するのに十分なスペースしか得られず、ヒープ内にオブジェクトがなくなります。
おそらく、すべてのスペースサイズのコメントを解除し、JVMに自動的に処理させるのが最善です。
それがうまくいかないのも不思議ではありません。スレッドあたりのスタックサイズは128Mbですが、全体で4096Mbしかありません。これにより、40スレッドを使用するのに十分なスペースしか得られず、ヒープ内にオブジェクトがなくなります。
おそらく、すべてのスペースサイズのコメントを解除し、JVMに自動的に処理させるのが最善です。