2016-09-02 7 views
0

Мой продукт имеет 256 МБ оперативной памяти. У меня есть обновление java 6 до java 8. Затем я начал сталкиваться с проблемой, связанной с памятью, с java 8. Потребление памяти сокращается со временем с помощью Java 8 С таким же кодом потребление памяти стабильно с java 6 Я так много изучил относительно metaspace, java8 и найденных ниже параметров метараспределения.Недостаточно памяти: Metaspace с java 8

Я попытался ниже комбинаций и вылезли ошибки памяти

1.MaxMetaspaceSize 50M MaxMetaspaceFreeRatio 60М MinMetaspaceFreeRatio 50М

2.MaxMetaspaceSize 30M

3.MaxMetaspaceSize 40M

4.MaxMetaspaceSize 50M

5.MaxMetaspaceSize 80М

Но после того, как 2 до 3 часов, OutOfMemory ошибка Метапространство поднял.

Может кто-нибудь объяснить, какие параметры метапроцессора MaxMetaspaceSize, MaxMetaspaceFreeRatio, MinMetaspaceFreeRatio есть?

Как я могу решить, какой правильный размер? Какова правильная комбинация этих значений, чтобы исключить появление экземпляра outofmemory в производстве и сократить потребление памяти?

+1

Я не понимаю, почему разработчики продолжают возиться с этими параметрами. Значение по умолчанию - * неограниченное * metaspace. Поэтому, если вы не знаете, какие ограничения являются лучшими, не указывайте никаких ограничений. – Holger

+0

Если мы не укажем ограничение, оно может закончиться огромным распределением памяти. – Smash

+1

Да, и если вы укажете предел, это может закончиться «OutOfMemoryError». Выбор за вами ... – Holger

ответ

1

Проблема разрешена. Обнаружено, что есть известная проблема с JAXB.

  • Используется stringbuffer вместо строки
  • Удален ненужный экземпляр JAXBContext.
  • См эту ссылку

  • Are there any memory utlization issue with JAXB?