Недостаточно памяти: метапространство с Java 8

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

Я пробовал следующие комбинации и получил ошибку памяти

1.MaxMetaspaceSize 50M MaxMetaspaceFreeRatio 60M MinMetaspaceFreeRatio 50M

2.MaxMetaspaceSize 30M

3.MaxMetaspaceSize 40M

4.MaxMetaspaceSize 50M

5.MaxMetaspaceSize 80M

Но через 2-3 часа возникла ошибка нехватки памяти в метапространстве.

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

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


person Smash    schedule 02.09.2016    source источник
comment
Я не понимаю, почему разработчики продолжают возиться с этими опциями. По умолчанию используется неограниченное метапространство. Поэтому, если вы не знаете, какие ограничения лучше, не указывайте никаких ограничений.   -  person Holger    schedule 02.09.2016
comment
Если мы не укажем limit , это может привести к огромному выделению собственной памяти.   -  person Smash    schedule 02.09.2016
comment
Да, и если вы укажете ограничение, оно может закончиться OutOfMemoryError. Выбор за вами…   -  person Holger    schedule 02.09.2016
comment
Если я не устанавливаю какой-либо атрибут метапространства, метапространство продолжает увеличиваться, даже если GC не очищает/выгружает классы из метапространства. почему это происходит? что мне делать, чтобы очистить метапространство при запуске GC?   -  person Smash    schedule 04.09.2016
comment
Вы не знаете. Если в программном обеспечении есть утечка памяти, никакая опция JVM не исправит это. Вы должны исправить программное обеспечение.   -  person Holger    schedule 05.09.2016
comment
Если в том же программном обеспечении есть утечка памяти, то почему оно нормально работает с Java 6? Код отсканирован, утечки нет.   -  person Smash    schedule 05.09.2016


Ответы (1)


The issue is resolved. Found that there are known issue with JAXB.

  • Используется строковый буфер вместо строки
  • Удален ненужный экземпляр JAXBContext.
  • Refer this link

  • Есть ли проблема использования памяти с JAXB?
  • person Smash    schedule 22.12.2016