OutOfMemoryException, несмотря на использование WeakHashMap

Если не вызывать System.gc(), система выдаст исключение OutOfMemoryException. Я не знаю, почему мне нужно звонить System.gc()явно; JVM должна называть gc()себя, верно? Пожалуйста, порекомендуйте. Вот мой тестовый код: public static void main(String[] args) throws InterruptedException {...