2016-07-12 3 views
1

을 살아 :알아낼 방법 어떤 개체가 나는 일부 개체는 이전 세대에 계속오고 볼 내 응용 프로그램에서 n 개의 작은 GC

- age 1: 23911192 bytes, 23911192 total 
- age 2:  627816 bytes, 24539008 total 
- age 3:  60344 bytes, 24599352 total 
- age 4:  19488 bytes, 24618840 total 
- age 5:  12864 bytes, 24631704 total 
- age 6:  10632 bytes, 24642336 total 
- age 7:  11472 bytes, 24653808 total 
- age 8:  10944 bytes, 24664752 total 
- age 9:  39480 bytes, 24704232 total 
- age 10:  10288 bytes, 24714520 total 
- age 11:  8072 bytes, 24722592 total 
- age 12:  9976 bytes, 24732568 total 
- age 13:  13112 bytes, 24745680 total 
- age 14:  8928 bytes, 24754608 total 
- age 15:  8600 bytes, 24763208 total <-- who are these guys? 

그래서, 내가 알아낼 수있는 가장 좋은 방법이 무엇인지 물어보고 싶은게 사람 사소한 GC에서 살아남은 개체입니까?

응용 프로그램은 한 시간 동안 작동하므로 그것은 워밍업 기간이 아니다.

+0

왜 중요 할 -Xlog:classhisto*=trace입니까? 그것은 단지 극소수의 부분 일뿐입니다. 과도한 양의 늙은 세대 컬렉션을 방아쇠를 당기는 것과는 다릅니다. – the8472

+0

@ the8472,별로 중요하지 않을 수 있습니다. 나 지금 무슨 일이 일어나고 있는지 관심있어. – evgeniy44

답변

0

나는 나이를

을 보유 기간으로 인스턴스를 나누기 어떤 옵션을 잘 모르는 것 같아요하지만 우리는 16 세에 라이브 오브젝트를 요구하는 경우 대신 그 이전 세대 승진 객체입니다. -XX:+PrintClassHistogram으로 추적 할 수 있습니다. 다음 전체 GC 전체 GC 후 전에 히스토그램 diffing의 것은 사이에서 젊은 컬렉션에서 이전 세대에 출혈 오브젝트하는 방법을 보여줍니다.

스냅 샷을 지원하는 메모리 프로파일 러를 사용하여 자신의 비교는 비슷한 통찰력을 제공 할 수 있습니다. 이에 해당하는 옵션을 기록 통일 자바 (9)의 내용은