2014-07-25 1 views
1

필자는 하루에 수천 명의 사용자에게 서비스를 제공하는 엔터프라이즈 수준의 Java 응용 프로그램을 보유하고 있습니다. 이것은 weblogic 10.3.6 (Java 1.6 JVM)의 JAXB 웹 서비스로, Hibernate를 사용하여 Oracle 데이터베이스에 접근합니다. 또한 다른 웹 서비스를 호출합니다.이러한 가비지 수집 설정을 사용하는 JVM 성능

-server -Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m 

이 GC 크기 조정의 효과는 무엇인가

우리는 우리의 생산 시스템에서 다음 GC 설정을 조정 한? 하드웨어에는 처리 할 수있는 충분한 용량이 있습니다.

안정적인 수준에서 힙 크기와 perm gen을 설정한다는 것을 알고 있습니다. 결국 가비지 수집을해야 할 때 그 영향은 무엇입니까?

저에게 GC가 자주 발생하지는 않지만, 발생하면 오랜 시간이 걸리는 것으로 보입니다. 소리가 맞습니까?

답변

1

는 GC가 자주 일어날 수 있도록하지만

그것은 수도, 그것은 사용 사례에 따라 발생할 않는 경우 더 오래 걸릴 것입니다. 드문 경우이지만 GC가 더 짧을 수도 있습니다.

2GB 힙이 그리 많지 않으므로 힙 크기 걱정없이 최대 26GB까지 사용할 수 있습니다. 이 크기보다 메모리 액세스가 약간 느리거나 더 많은 메모리를 사용합니다.

+0

고마워, 그건 내가 생각할 수있는 일이다. 따라서이 작업을 수행하는 그룹은 올바르게 수행하고 있습니다. 즉, 힙 크기를 적절히 설정하고 그대로 두는 것입니다. 그들은 2GB로 힙을 올렸습니다. –

+1

@ AlanDelimon 더 많은 메모리를 사용하는 것보다 프로세스가 실패한 지점으로 최대 힙 크기를 설정하려고합니다. 최소값을 최대 값으로 설정할 필요는 없습니다. 최소값을 JVM이 사용할 것으로 예상하는 양으로 설정하면 최대 값보다 작을 수 있습니다. –

2

응용 프로그램이 어떻게 동작하는지 모를 때 크기를 결정하기 전에 GC를 모니터링하십시오. 이 linkthis을 살펴보십시오. GC와 도구에 대한 좋은 참고 자료가 있습니다.

1

-Xmx & -Xms 및 PermSize & MaxPermSize를 같은 크기로 설정하면 요구 사항에 따라 JVM의 힙 크기가 조정되지 않습니다. 이러한 크기 조정은 Full GC를 트리거하므로 비용이 많이 듭니다.

-server를 사용하면 JVM이 네이티브 어셈블리 명령어로 코드를 컴파일하기 전에 더 적극적인 최적화를 수행 할 Server Compiler를 사용할 수 있습니다. now-a-days이지만 2 개 이상의 코어와 2GB + 메모리가있는 시스템은 기본적으로 서버 컴파일러를 사용합니다.

메모리를 늘려도 항상 문제가 해결되는 것은 아닙니다. 때로는 더 많은 메모리를 추가하는 것이 오버 헤드가 될 수 있습니다.

는 GC에 대한 정보가 필요한 경우, 당신은이 link

조정 뭔가 매우 이유는 처리량 및 대기 시간 목표를 달성하여이 응용 프로그램의 성능을 개선하는 것입니다 시도 할 수 있습니다.