У нас есть коллекция объектов, которая со временем становится довольно большой.Мы внедрили стратегию кэширования, чтобы облегчить это, однако у нас все еще не хватает пространства кучи во время выполнения - если при запуске не выделяется достаточно памяти.
Существует ли стандартный механизм для уменьшения размераэтот кеш во время выполнения, чтобы удалить эти ошибки OutOFMemory?Таким образом, если наш процесс запускается с меньшим объемом памяти, чем обычно, мы можем надеяться избежать гибели сервера.
Я понимаю, что это тип ошибки и, следовательно, его не следует перехватывать / обрабатывать, поскольку он обычно является показательнымболее серьезной проблемы.
Это так же просто, как иметь что-то следующее:
private static final long RECOMMENDED_MEMORY = 1073741824L; //Example 1 Gig
private static int recommendedCacheSize = 100; //Example of 100 items
long heapSize = Runtime.getRuntime().totalMemory();
double size = Math.floor((double) heapSize/RECOMMENDED_MEMORY * recommendedCacheSize);
recommendedCacheSize = ++size;