Final note:
Sawtooth patterns in java memory usage are normal, usually. You have a situation where a tiny sawtooth turns into a large sawtooth, that persists after the load is presumably finished. That part is unusual. Memory eventually filling up and crashing is also unusual.