전송 : HTTPS : //www.cnblogs.com/starhu/p/6400348.html에 utm_source = itdadao & utm_medium을 = 추천?
- 힙 사이즈
, 사용 가능한 가상 메모리 제한 시스템 물리 메모리를 사용할 제한 시스템은 운영 체제와 관련된 데이터 모델 (BT-32 또는 64 비트) 값 : JVM 최대 힙 사이즈는 세 가지 제한을 갖는다. 일반적 1.5G ~ 2G에 한정되는 32 비트 시스템, 운영 체제 (64) 무제한 메모리. 나는 최대가 1,478m로 설정, 테스트에서 Windows Server 2003 시스템, 3.5G 물리적 메모리, JDK5.0 있습니다.
일반 설정 :- 자바 -Xmx3550m -Xms3550m -Xmn2g -Xss128k
- Xmx3550m 다음 3550M에 사용할 설정 JVM 최대 메모리.
-Xms3550m : 3,550m를 촉진하기 위해 JVM 메모리 설정. 이 값은 재 할당 메모리 가비지 콜렉션이 완료되지 않도록 같은 -Xmx 각 JVM을 설정할 수있다.
-Xmn2g : 설정 젊은 세대 2G의 크기입니다. 전체 JVM 메모리 크기 = 크기 + 영구 세대 크기 + 크기의 젊은 세대 구세대 . 젊은 세대의 증가가 이전 세대의 크기를 줄일 수 있도록 영구 세대는 일반적으로 고정 된 크기 64m이다. 시스템 성능에이 값은 큰 영향은, 일 관계자는 3/8의 전체 힙에 대한 구성을 권장합니다.
-Xss128k : 각 스레드의 스택 크기를 설정합니다. 각 스레드 스택 크기가 256K 전에 각 스레드 스택 크기 후 JDK5.0는 1M이다. 필요한 조정의 더 많은 응용 프로그램 메모리 크기를 스레드. 동일한 물리적 메모리에서이 값을 줄이면 더 많은 스레드를 생성 할 수 있습니다. 그러나, 프로세스 내에서 운영 체제 스레드 수는 여전히 3000 및 5000에없는 무제한 세대, 경험, 제한. - -Xmx3550m -Xms3550m -Xss128k 자바 -XX : NewRatio = -XX 4 :. SurvivorRatio = -XX 4 :.를 MaxPermSize 16m -XX = = 0 MaxTenuringThreshold입니다
-XX : = NewRatio 4. : 세트 (에덴과 두 생존자의 지역을 포함) 젊은 세대 구세대 비율 (제거 영구 세대). 4로 설정되어, 젊은 세대와 1 구세대 비율의 비율 : 4, 젊은 세대 1/5의 전체 스택
-XX : SurvivorRatio = 4 : 설정 에덴 서바이버 젊은 세대 영역의 면적 비율의 크기입니다. (4)에 설정하고, 생존자 에덴 영역과 두 영역의 비율은 2 : 4, 총면적 서바이버 젊은 세대 1/6
-XX =를 MaxPermSize 16m : 영구 생성 16m의 크기를 설정하는 단계를 포함한다.
-XX는 : MaxTenuringThreshold입니다 = 0 : 쓰레기의 최대 사용 기간을 설정합니다. 바로 이전 세대에, 생존자 영역없이 다음 0으로 개체의 젊은 세대를 설정 한 경우 . 효율성을 향상시킬 수있는 응용 프로그램의 이전 세대의 더하십시오. 이 값이 큰 값으로 설정하면, 젊은 세대 개체는 개체를 증가 후 생존 기간의 젊은 세대가 할 수 생존자 지역에서 여러 번 복사됩니다 , 젊은 세대에 대한 소개의 증가, 즉 재활용을.
- 자바 -Xmx3550m -Xms3550m -Xmn2g -Xss128k
- 선택된 수집기
: JVM 세 가지 옵션을 준 직렬 콜렉터 컬렉터 병렬 동시 콜렉터 있지만 직렬 컬렉터 병렬 동시 콜렉터 수집기 선택 그래서 여기에 주로 소량의 데이터에만 적용 . 다른 수집가를 사용하려면 기본적으로 JDK5.0 이전에, 직렬 수집을 시작할 때 적절한 매개 변수를 추가 할 필요가 사용하고있었습니다. JDK5.0, JVM이 전류에 기초하여 후 시스템 구성 결정된다.- 스루풋 우선 평행 수집기
등 과학 기술 배경 처리를위한 소정의 일정한 목표에 도달하기 위해 상기 주로 평행 콜렉터를 설명한다.
구성 :- -Xmx3800m -Xms3800m -Xmn2g -Xss128k 자바 -XX : + UseParallelGC -XX : ParallelGCThreads = 20 인
-XX : + UseParallelGC : 가비지 컬렉터 병렬 집 전체를 선택한다. 이 구성은 젊은 세대 유효합니다. 여전히 직렬 콜렉터의 이전 세대를 사용하면서 상기 구성 것을 젊은 세대는 동시 수집을 사용한다.
-XX : ParallelGCThreads = 20이다 : 스레드 번호 컬렉터 병렬 구성, 즉 : 동시에 많은 가비지 컬렉션 스레드. 이 설정 값은 프로세서의 수와 동일한 것이 바람직하다. - -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX 자바 : + UseParallelGC -XX : ParallelGCThreads = 20 인 -XX : + UseParallelOldGC
-XX : + UseParallelOldGC : 구성 이전 세대 가비지 컬렉션이 병행하여 수집된다. 병렬 콜렉터의 이전 세대 JDK6.0 지원. - -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX 자바는 : + UseParallelGC -XX : MaxGCPauseMillis = 100
-XX : MaxGCPauseMillis = 100 : 이 시간을 충족 할 수없는 경우 설정은 젊은 세대 가비지 컬렉션 때마다 최대 시간, JVM이 자동으로 어린 조정됩니다 크기를 대체하는 것은이 값을 충족합니다. - -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX 자바 : + UseParallelGC -XX : MaxGCPauseMillis = 100 - XX : + UseAdaptiveSizePolicy
-XX : + UseAdaptiveSizePolicy 이 옵션이 설정되어, 병렬 콜렉터 자동 젊은 세대 영역의 크기와 대응하는 서바이버를 선택할 것 병렬 콜렉터가 열리면 비례 대역, 낮은 목표 주파수 시스템, 또는 모음에 해당하는 소정의 시간이 권장 값을 사용한다.
- -Xmx3800m -Xms3800m -Xmn2g -Xss128k 자바 -XX : + UseParallelGC -XX : ParallelGCThreads = 20 인
- 응답 시간 우선 동시 콜렉터
상술 된 바와 같이, 동시 콜렉터는 주로 정지 시간이 가비지 콜렉션을 줄이는 시스템의 응답 시간을 보장한다. 애플리케이션 서버, 통신 및 기타 분야에 적합합니다.
구성 :- -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX 자바 : ParallelGCThreads = 20은 -XX : + UseConcMarkSweepGC -XX : + UseParNewGC
-XX : + UseConcMarkSweepGC : 동시 수집 된 설정을했다. 이 구성을 테스트 한 후, -XX : NewRatio = 4 구성은 알 수없는 이유로 실패합니다. 따라서, 신세대의 크기는 바람직 -Xmn 제공되는 경우.
-XX : + UseParNewGC : 젊은 대신 설정 병렬 컬렉터. CMS 수집과 동시에 사용할 수 있습니다. JDK5.0 위, JVM이 시스템 구성에 자신의 관련된 발명 설정할 수 있습니다,이 값을 설정할 필요가 없습니다. - -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX 자바 : + UseConcMarkSweepGC -XX : CMSFullGCsBeforeCompaction = 5 -XX : + UseCMSCompactAtFullCollection
-XX : CMSFullGCsBeforeCompaction는 :. 메모리 공간 동시 콜렉터가 정리되지 압축 않기 때문에, 그 일정 시간 후에 실행 생산할 예정 " 작업 효율을 파편 "는 감소한다. 이 값은 마무리 압축 후 몇 번 GC 메모리 공간을 실행하도록 설정되어 있습니다.
-XX : + UseCMSCompactAtFullCollection : 이전 세대의 열기 압축. 성능에 영향을 미칠 수 있습니다,하지만 당신은 파편을 제거 할 수 있습니다
- -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX 자바 : ParallelGCThreads = 20은 -XX : + UseConcMarkSweepGC -XX : + UseParNewGC
- 스루풋 우선 평행 수집기
- 보충 정보
JVM은 디버깅 정보를 인쇄, 명령 줄 매개 변수를 제공합니다. 다음의 몇 가지가 있습니다 :- -XX : + PrintGC의
출력 형식 : GC 118250K-> 113543K (130112K ) 0.0094143 초][전체 GC 121376K-> 10414K (130112K) 0.0650971 초]
- -XX : + PrintGCDetails의
출력 형식 : GC [DefNew : 8614K-> 781K (9088K) 0.0123035 초] 118250K-> 113543K (130112K) 0.0124633 초][GC [DefNew : 8614K-> 8614K (9088K) 0.0000665 초] 종신 : 112761K-> 10414K (121024K) 0.0433488 초] 121376K-> 10414K (130112K) 0.0436268 초]
- -XX : + PrintGCTimeStamps -XX : + PrintGC 두 혼합하면서 위에서 사용 PrintGCTimeStamps
출력 형태 : 11.851 [GC에 98328K-> 93620K (130112K) 0.0082960 초] - -XX은 : + PrintGCApplicationConcurrentTime : 각 가비지 컬렉션 전에 인쇄, 프로그램은 실행 시간을 방해하지 않습니다. 위 사용하여 혼합 될 수있다
출력 양식을 : 응용 프로그램 시간 : 0.5291524 초를 - -XX : + PrintGCApplicationStoppedTime은 : 인쇄 쓰레기 재활용 프로그램은 시간 동안 일시 중단됩니다. 그것은 위의와 혼합 될 수있다
형태로 출력 : 총 시간은 어떤 파일을 응용 프로그램에 대한 스레드를 중단했다 : 0.0468229 초를 - -XX : PrintHeapAtGC :打印GC前后的详细堆栈信息
输出形式:
34.702 [GC 호출 = 7 GC {힙 전 :
DEF 차세대 총 55296K는 52568K [0x1ebd0000, 0x227d0000, 0x227d0000) 사용
공간 49152K 에덴, 99 % 사용 [ 0x1ebd0000, 0x21bce430, 0x21bd0000)
, 55 %가 사용 된 공간 6144K에서 [0x221d0000, 0x22527e10, 0x227d0000)
공간 6144K로는, 0 % 사용한 [0x21bd0000는 0x21bd0000는 0x221d0000)
종신 생성 총 69632K가 사용될 2696K [0x227d0000, 0x26bd0000, 0x26bd0000)
공간 69632K 3 % 사용한 [0x227d0000가 0x22a720f8가 0x22a72200가 0x26bd0000)
압축 파마 겐 총 8192K, 2898K 사용 [0x26bd0000, 0x273d0000, 0x2abd0000)
공간 8192K가 35 % 사용 [0x26bd0000가 0x26ea4ba8가 0x26ea4c00가 0x273d0000)
RO 공간 8192K, 66 % 사용 [0x2abd0000가 0x2b12bcc0가 0x2b12be00, 0x2b3d0000)
RW 공간 12288K가 46 % 사용 [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
34.735 : [DefNew : 52568K-> 3433K (55296K), 0.0072126 초]을 55264K-> 6615K (124928K) GC 호출 = 8 이후 힙 :
DEF 차세대 총 55296K가 사용 3433K [0x1ebd0000, 0x227d0000는 0x227d0000)는
에덴 공간 49152K, 0 % 사용 [0x1ebd0000, 0x1ebd0000, 0x21bd0000)
, 55 %는 [0x21bd0000, 0x21f2a5e8, 0x221d0000) 사용 공간 6144K에서
공간 6144K로는 0 % 사용한 [0x221d0000가 0x221d0000, 0x227d0000)
종신 생성 총 69632K는 3182K를 사용 [0x227d0000, 0x26bd0000, 0x26bd0000)
공간 69632K, 4 %를 사용 [0x227d0000는 0x22aeb958는 0x22aeba00는 0x26bd0000)
압축 파마 겐 총 8192K는 2898K [0x26bd0000, 0x273d0000, 0x2abd0000) 사용
8192K가 35 %가 사용되는 공간 [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)
RO 공간 8192K 66 %의 [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000) 사용
, 46 %가 사용 RW 공간을 12288K [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
}
, 0.0757599 초] - -Xloggc : 파일명 : 상기와 관련하여 여러 가지 사용 분석을 위해 파일에 기록 된 로그 정보.
- -XX : + PrintGC의
- 일반적인 구성 요약
- 힙 설정
- -Xms : 초기 힙 크기
- -Xmx : 최대 힙 크기
- -XX 다음 newSize와 = N- : 설정 젊은 세대의 크기
- -XX : NewRatio = N : 젊은 세대와 노인 세대의 비율을 설정. 예를 들면 : 3, 1의 이전 세대의 비율로 젊은 세대를 보여주는 : 3, 총 젊은 세대와 젊은 세대 세 세대 1/4
- -XX : SurvivorRatio = N- : 젊은 세대 영역 두 서바이버 영역이든 비. 참고 두 생존자의 영역이 있다는 것을. 예컨대 : 총면적 서바이버 젊은 세대 1/5 2 생존자 = 3 : 3, 에덴 표현
- -XX : = N-를 MaxPermSize : 영구 세대의 크기를 설정
- 수집기 설정
- -XX : + UseSerialGC는 : 직렬 콜렉터 구비
- -XX : + UseParallelGC : 병렬로 배치 된 수집기
- -XX : + UseParalledlOldGC : 이전 세대 수집기 평행하게 배치
- -XX : + UseConcMarkSweepGC는 : 동시 콜렉터 구비
- 쓰레기 수집 통계
- -XX : + PrintGC
- -XX : + PrintGCDetails
- -XX : + PrintGCTimeStamps
- -Xloggc : 파일 이름
- 병렬로 배치 된 집
- -XX : ParallelGCThreads = N- : CPU 세트의 개수가 병렬 콜렉터를 수집하는데 사용. 스레드 수를 수집하는 병렬.
- -XX : MaxGCPauseMillis = N- : 최대 일시 정지 시간을 수집하는 것은 병렬로 제공된다
- -XX : GCTimeRatio = N- : 시간의 쓰레기 수집 비율 시간을 실행하는 프로그램. 화학식 1 / (1 + N)
- 동시 수집기 설정
- -XX : + CMSIncrementalMode : 모드 설정 증가합니다. 하나의 CPU 케이스.
- -XX : ParallelGCThreads = N- : 동시 수집기가 수집 병렬 CPU의 개수가 사용될 때 젊은 세대 모드를 수집하기 위해 제공된다. 스레드 수를 수집하는 병렬.
- 힙 설정
넷째, 튜닝 요약
- 젊은 세대의 크기를 선택
- 응용 프로그램의 우선 순위 응답 시간 : 큰 세트로 최소 시스템 응답 시간 제한 근처까지 (실제 상황에 따라). 이 경우, 발생 신세대 컬렉션 주파수는 최소이다. 동시에, 이전 세대 개체의 범위를 줄일 수있다.
- 우선 애플리케이션 처리량 : 대형을 설정하는 것이 가능한 한, 기가비트의 수준에 도달 할 수 있습니다. 응답 시간이 요구되지 않기 때문에, 가비지 콜렉션은 일반적인 애플리케이션 8CPU 대해 병렬로 수행 될 수있다.
- 오래된 세대 크기 선택
- 응용 프로그램의 우선 순위 응답 시간 : 크기 필요가 세트에주의해야하므로 일반적으로 고려하는, 수집가의 동시 구세대를 사용하여 동시 세션 비율 및 기간 세션의 일부 매개 변수를. 힙이 작게 설정하면, 메모리 조각화, 높은 주파수와 명확한 표시의 전통적인 방법의 사용을 일시 중단 복구 응용 프로그램을 일으킬 수 있습니다 큰 힙이 더 긴 수집 시간을 필요로합니다. 가장 최적의 솔루션, 일반적으로 얻은 다음 데이터를 참조해야합니다
- 동시 가비지 컬렉션 정보
- 동시 영구 생성 컬렉션의 개수
- 전통적인 GC 정보
- 젊은 세대와 이전 세대의 재활용에 소요되는 시간의 비율
- 처리량 우선 순위 응용 프로그램 : 우선 순위 애플리케이션 처리량 일반적으로는 젊은 세대의 많은 더 작은 구세대 있습니다. 당신이 이전 세대가 살아있는 객체의 장기 저장을하는 동안, 중기 목표를 줄이기 위해 대부분의 단기 목표에서 최대한 복구 할 수 있도록 그 이유이다.
- 응용 프로그램의 우선 순위 응답 시간 : 크기 필요가 세트에주의해야하므로 일반적으로 고려하는, 수집가의 동시 구세대를 사용하여 동시 세션 비율 및 기간 세션의 일부 매개 변수를. 힙이 작게 설정하면, 메모리 조각화, 높은 주파수와 명확한 표시의 전통적인 방법의 사용을 일시 중단 복구 응용 프로그램을 일으킬 수 있습니다 큰 힙이 더 긴 수집 시간을 필요로합니다. 가장 최적의 솔루션, 일반적으로 얻은 다음 데이터를 참조해야합니다
- 발생하는 파편의 작은 더미
는 힙을 압축하지 않도록 이전 세대 동시 수집기, 마크, 청소 알고리즘을 사용하기 때문이다. 집 전체가 회수되면, 그 큰 객체에 할당 될 수있는 인접 공간을 병합한다. 힙 공간이 작은 경우에는, 몇 시간 동안 실행 한 후, "파편"동시 수집기가 충분한 공간을 찾을 수없는 경우, 다음 동시 수집기가 중지 한 후 복구를위한 방법을 삭제, 기존의 마커를 사용할 수있을 것입니다. 다음과 같이 "파편"이 나타나면해야 할 수도 있습니다 :- -XX : + UseCMSCompactAtFullCollection : 동시 컬렉터를 사용하는 경우, 이전 세대 압축 켜.
- -XX : CMSFullGCsBeforeCompaction = 0 : 전체 GC 명세서 제공 횟수에 상기 구성의 경우, 이전 세대의 압축