2017-12-01 13 views
1

"jmap -histo : live"를 예약 기준 (예 : 10 분마다)으로 실행하여 가비지 수집을 실행하는 것이 안전합니까 (아니면 좋은 생각입니까?). 우리는 AWS (Amazon Web Services)에서 얻는 알람의 수를 줄이기 위해 메모리 소비가 많을 때 트리거합니다."jmap -histo : live"를 예정대로 실행하여 가비지 수집을 실행하는 것이 안전할까요 (아니면 좋은 생각입니까?).

서버에 16GB RAM이 있습니다. GC는 (CMS 대신) G1GC입니다. Xmx는 12GB로 설정됩니다. Xms도 12GB입니다 (그러나 우리는 그것을 줄일 계획입니다). Excel 파일이 Apache POI (XSSFSheet 사용)를 통해 처리/생성 될 때 메모리 소비가 빠르게 증가합니다.

BTW, 프로덕션 환경 (SAP Hybris 5.7.0.3)에서 예약 된 jmap을 실행할 계획입니다.

+0

https://stackoverflow.com/questions/6418089/does-jmap-force-garbage-collection-when-the-live-option-is-used? – Andremoniy

+0

10 분마다 프로덕션에서 Full GC를 트리거 하시겠습니까? 나에게 작은 재앙처럼 냄새가 난다. – Eugene

답변

0

전체 Gc를 실제로 실행하려면 jcmd <pid> GC.run이 더 명확하게 보이지만 이는 재앙을위한 처방입니다. 하지 마! 특히 전체 gc가 단일 스레드 (하나의 CPU)이며 연령이 걸릴 수있는 G1에서는 그렇지 않습니다. 대신 응용 프로그램이 너무 많은 RAM (힙 크기를 줄이고 메타 공간에 대한 제한을 설정)을 사용하거나 경보가 너무 일찍 나가는 문제를 수정하십시오.

간단히 말해서 그것은 안전하지도 않고 좋은 생각도 아닙니다. 그것은 당신을 죽일 것입니다.