2016-09-02 3 views
0

내 제품에는 256MB의 RAM이 있습니다. 나는 java 8을 java 8로 업그레이드했다. 그런데 자바 8에 관련된 메모리 관련 문제가 발생하기 시작했다. 자바 8에서 메모리 소비는 시간이 갈수록 증가하고있다. 동일한 코드를 사용하면 자바 6에서 메모리 사용량이 안정적이다 나는 많은 것을 탐구했다. metaspace에 관해서는, java8이며 metaspace 매개 변수 아래에 있습니다.Out of Memory : Java 8의 메타 공간

나는

1.MaxMetaspaceSize 5,000 MaxMetaspaceFreeRatio 60M MinMetaspaceFreeRatio 50M

2.MaxMetaspaceSize의 30M

3.MaxMetaspaceSize의 40M을 조합 아래 시도하고 메모리 오류에서 가지고

4.MaxMetaspaceSize 5,000

5.MaxMetaspaceSize의 80M

그러나 2 ~ 3 시간 후,에서 OutOfMemory metaspace 오류가 발생.

누군가가 메타 공간 옵션 MaxMetaspaceSize, MaxMetaspaceFreeRatio, MinMetaspaceFreeRatio가 무엇인지 설명 할 수 있습니까?

올바른 크기는 어떻게 결정합니까? 생산에서 메모리 부족 인스턴스를 피하고 메모리 소비를 줄이려면이 값의 올바른 조합은 무엇입니까?

+1

이해가 안에게, 참조하십시오. 기본값은 * 무제한 * 메타 공간입니다. 따라서 어떤 한계가 최선인지 모를 경우 제한을 지정하지 마십시오. – Holger

+0

제한을 지정하지 않으면 거대한 기본 메모리 할당으로 끝날 수 있습니다. – Smash

+1

예, 제한을 지정하면 'OutOfMemoryError'로 끝날 수 있습니다. 선택 사항은 ... – Holger

답변

1

문제가 해결되었습니다. JAXB와 (과) 알려진 문제점이 있음을 발견했습니다.

  • 문자열 대신 문자열 버퍼 사용
  • JAXBContext의 불필요한 인스턴스를 제거했습니다.

  • 이 링크 개발자가 이러한 옵션 장난 왜 계속
  • Are there any memory utlization issue with JAXB?