История изменений
Исправление Aber, (текущая версия) :
1 тред это один стек, который по дефолту кажись 1 метр, 500 тредов = 500 метров.
По коду, если я правильно понял, у тебя каждый тред живет 2.5 секунды (5 итераций цикла по 500 мс). Т.е. после захвата 1 гига на стеки (в течении ~5 секунд после старта приложения) вроде ничего больше создаваться не будет, потому дальше гига память расти вроде не должна. Вообще за памятью в jvm лучше следить через jvisualvm (может уже по другому называется).
Исходная версия Aber, :
1 тред это один стек, который по дефолту кажись 1 метр, 500 тредов = 500 метров.