스냅샷을 프로그래밍 방식으로 저장하기 위해 오프라인 프로파일링을 사용할 때, 해당 스냅샷에서 데이터나 보고서를 프로그래밍 방식으로 추출해야 할 수도 있습니다. JProfiler는 스냅샷에서 뷰를 내보내기 위한 실행 파일과 스냅샷을 비교하기 위한 실행 파일, 이렇게 두 개의 개별 명령줄 실행 파일을 제공합니다.
스냅샷에서 뷰 내보내기
실행 파일 bin/jpexport는 뷰 데이터를 다양한 형식으로 내보냅니다. -help 옵션으로 실행하면 사용 가능한 뷰 이름과 뷰 옵션에 대한
정보를 확인할 수 있습니다.
간결성을 위해 아래 출력에서는 중복된 도움말 텍스트를 생략했습니다.
사용법: jpexport "스냅샷 파일" [글로벌 옵션]
"뷰 이름" [옵션] "출력 파일"
"뷰 이름" [옵션] "출력 파일" ...
"snapshot file"은 다음 확장자를 가진 스냅샷 파일입니다:
.jps, .hprof, .hpz, .phd, .jfr
"뷰 이름"은(는) 아래 나열된 뷰 이름 중 하나입니다.
[options]는 -option=value 형식의 옵션 목록입니다.
"output file"은(는) 내보내기의 출력 파일입니다
글로벌 옵션:
-obfuscator=none|proguard|yguard
선택한 난독화 도구에 대해 디옵스큐레이트합니다. 기본값은 "none"이며, 다른 값을 사용하려면 mappingFile 옵션을
지정해야 합니다.
-mappingfile=<file>
선택한 난독화 도구에 대한 매핑 파일.
-outputdir=<출력 디렉토리>
뷰의 출력 파일이 상대 경로 파일인 경우에 사용할 기본 디렉터리입니다.
-ignoreerrors=true|false
옵션을 설정할 수 없는 뷰에서 발생하는 오류를 무시하고 다음 뷰로 계속 진행하십시오. 기본값은 "false"이며, 이는 첫
번째 오류가 발생하면 내보내기가 중단됨을 의미합니다.
-csvseparator=<구분자 문자>
CSV 내보내기의 필드 구분 문자입니다. 기본값은 ','입니다.
-bitmap=false|true
적절한 경우, 주요 콘텐츠에 대해 SVG 대신 비트맵 이미지를 내보내십시오. 기본값은 false입니다.
사용 가능한 뷰 이름 및 옵션:
* TelemetryHeap, TelemetryObjects, TelemetryThroughput, TelemetryGC,
TelemetryClasses, TelemetryThreads, TelemetryCPU
옵션:
-format=html|csv
내보낸 파일의 출력 형식을 결정합니다. 존재하지 않으면, 출력 파일의 확장자로부터 내보내기 형식이 결정됩니다.
-minwidth=<픽셀 수>
graph의 최소 너비(픽셀 단위)입니다. 기본값은 800입니다.
-minheight=<픽셀 수>
픽셀 단위로 graph의 최소 높이입니다. 기본값은 600입니다.
* Bookmarks, ThreadMonitor, CurrentMonitorUsage, MonitorUsageHistory
옵션:
-format=html|csv
* AllObjects
옵션:
-format=html|csv
-viewfilters=<쉼표로 구분된 목록>
내보내기를 위한 뷰 필터를 설정합니다. 뷰 필터를 설정하면, 내보내기된 뷰에 지정된 패키지와 그 하위 패키지만 표시됩니다.
-viewfiltermode=startswith|endswith|contains|equals
뷰 필터 모드를 설정합니다. 기본값은 "contains"입니다.
-viewfilteroptions=casesensitive
뷰 필터에 대한 Boolean 옵션입니다. 기본적으로 옵션이 설정되어 있지 않습니다.
-aggregation=class|package|component
내보내기를 위한 집계 수준을 선택합니다. 기본값은 classes입니다.
-expandpackages=true|false
패키지 집계 수준에서 패키지 노드를 확장하여 포함된 클래스를 표시합니다. 기본값은 "false"입니다. 다른 집계 수준 및
csv 출력 형식에서는 효과가 없습니다.
* RecordedObjects
AllObjects와 유사하지만 추가 옵션이 포함되어 있습니다:
-liveness=live|gc|all
내보내기를 위한 활성도 모드를 선택합니다. 즉, 활성 객체, 가비지 수집된 객체 또는 둘 다 표시할지를 선택합니다. 기본값은
활성 객체입니다.
* AllocationTree
옵션:
-format=html|xml
-viewfilters=<쉼표로 구분된 목록>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
내보내기를 위한 집계 수준을 선택합니다. 기본값은 methods입니다.
-class=<fully qualified class name>
클래스에 대한 할당 데이터를 계산할 클래스를 지정합니다. 비어 있으면 모든 클래스의 할당이 표시됩니다. package 옵션과
함께 사용할 수 없습니다.
-package=<fully qualified package name>
패키지에 대한 할당 데이터를 계산할 패키지를 지정합니다. 비어 있는 경우, 모든 패키지의 할당이 표시됩니다. 패키지 이름에
.**를 추가하면 패키지를 재귀적으로 선택합니다. class 옵션과 함께 사용할 수 없습니다.
-liveness=live|gc|all
* AllocationHotSpots
옵션:
-format=html|csv|xml
-viewfilters=<쉼표로 구분된 목록>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
-class=<fully qualified class name>
-package=<fully qualified package name>
-liveness=live|gc|all
-unprofiledclasses=separately|addtocalling
프로파일되지 않은 클래스를 별도로 표시할지 호출 클래스에 추가할지를 선택합니다. 기본값은 프로파일되지 않은 클래스를 별도로
표시하는 것입니다.
-valuesummation=self|total
핫스팟의 시간이 어떻게 계산되는지를 결정합니다. 기본값은 "자체"입니다.
-expandbacktraces=true|false
HTML 또는 XML 형식으로 백트레이스를 확장합니다. 기본값은 "false"입니다.
* ClassTracker
TelemetryHeap와 유사하지만 추가 옵션이 포함되어 있습니다:
-class
추적된 클래스입니다. 누락된 경우, 첫 번째로 추적된 클래스가 내보내집니다.
* CallTree
옵션:
-format=html|xml
-viewfilters=<쉼표로 구분된 목록>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
-threadgroup=<스레드 그룹의 이름>
내보내기를 위한 스레드 그룹을 선택합니다. "thread"도 지정하면 스레드는 이 스레드 그룹에서만 검색되며, 그렇지 않으면
전체 스레드 그룹이 표시됩니다.
-thread=<스레드 이름>
스레드를 내보내기에 선택합니다. 기본적으로 호출 트리는 모든 스레드에 대해 병합됩니다.
-threadstatus=all|running|waiting|blocking|netio
내보내기를 위한 스레드 상태를 선택합니다. 기본값은 "running"입니다.
* HotSpots
옵션:
-format=html|csv|xml
-viewfilters=<쉼표로 구분된 목록>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
-threadgroup=<스레드 그룹의 이름>
-thread=<스레드 이름>
-threadstatus=all|running|waiting|blocking|netio
-expandbacktraces=true|false
-unprofiledclasses=separately|addtocalling
-valuesummation=self|total
* OutlierDetection
옵션:
-format=html|csv
-threadstatus=all|running|waiting|blocking|netio
-viewfilters=<쉼표로 구분된 목록>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
* Complexity
옵션:
-format=html|csv|properties
-fit=best|constant|linear|quadratic|cubic|exponential|logarithmic|n_log_n
내보내야 할 적합도입니다. 기본값은 "best"입니다. 곡선 피팅 데이터는 CSV로 내보내지 않습니다.
-method=<method name>
복잡성 그래프를 내보낼 메서드 이름입니다. 지정하지 않으면 첫 번째 메서드가 내보내집니다. 그렇지 않으면 주어진 텍스트로
시작하는 첫 번째 메서드 이름이 내보내집니다.
-width=<픽셀 수>
-height=<픽셀 수>
* ThreadHistory
TelemetryHeap와 유사하지만 옵션이 변경되었습니다:
-format=html
* MonitorUsageStatistics
옵션:
-format=html|csv
-type=monitors|threads|classes
모니터 통계를 계산할 엔티티를 선택합니다. 기본값은 "monitors"입니다.
* ProbeTimeLine
ThreadHistory와 유사하지만 추가 옵션이 포함되어 있습니다:
-probeid=<id>
프로브를 내보내야 하는 내부 ID입니다. 모든 사용 가능한 내장 프로브를 나열하고 사용자 정의 프로브 이름에 대한 설명을
보려면 "jpexport --listProbes"을 실행하세요.
* ProbeControlObjects
옵션:
-probeid=<id>
-format=html|csv
* ProbeCallTree
옵션:
-probeid=<id>
-format=html|xml
-viewfilters=<쉼표로 구분된 목록>
-viewfiltermode=startswith|endswith|contains|equals|wildcard|regex
-viewfilteroptions=exclude,casesensitive
-aggregation=method|class|package|component
-threadgroup=<스레드 그룹의 이름>
-thread=<스레드 이름>
-threadstatus=all|running|waiting|blocking|netio
내보내기를 위한 스레드 상태를 선택합니다. 기본값은 "all"입니다.
* ProbeHotSpots
ProbeCallTree와 유사하지만 추가되거나 변경된 옵션이 있습니다:
-format=html|csv|xml
-expandbacktraces=true|false
* ProbeTelemetry
TelemetryHeap와 유사하지만 추가 옵션이 포함되어 있습니다:
-probeid=<id>
-telemetrygroup
텔레메트리 그룹의 1 기반 인덱스를 설정합니다. 이는 프로브 텔레메트리 뷰 위의 드롭다운 목록에서 볼 수 있는 항목을
참조합니다. 기본값은 "1"입니다.
* ProbeEvents
옵션:
-probeid=<id>
-format=html|csv|xml
-maxevents=<수>
내보낼 최대 이벤트 수 (CSV 및 XML만 해당). 기본값은 100,000입니다.
* ProbeTracker
TelemetryHeap와 유사하지만 추가 옵션이 포함되어 있습니다:
-probeid=<id>
-index=<number>
드롭다운 목록에서 추적된 요소를 포함하는 항목의 0부터 시작하는 인덱스를 설정합니다. 기본값은 0입니다.
스냅샷 비교
실행 파일 bin/jpcompare는 서로 다른 스냅샷을 비교하여 HTML 또는 기계 판독 가능한 형식으로
내보냅니다. 해당 파일의 -help 출력은 아래와 같으며,
마찬가지로 중복된 설명은 생략되었습니다.
사용법: jpcompare "스냅샷 파일"[,"스냅샷 파일",...] [글로벌 옵션]
"비교 이름" [옵션] "출력 파일"
"비교 이름" [옵션] "출력 파일" ...
"snapshot file"은 다음 확장자를 가진 스냅샷 파일입니다:
.jps, .hprof, .hpz, .phd, .jfr
각 파일 이름은 형식에 따라 난독화 옵션을 포함할 수 있습니다
<파일 이름>:<난독화기>:<매핑 파일>
여기서 <난독화기>와 <매핑 파일>은 전역 옵션
-obfuscator 및 -mappingfile에 해당합니다.
"비교 이름"은(는) 아래 나열된 비교 이름 중 하나입니다.
[options]는 -option=value 형식의 옵션 목록입니다.
"output file"은(는) 내보내기의 출력 파일입니다
글로벌 옵션:
-obfuscator=none|proguard|yguard
선택한 난독화 도구에 대해 디옵스큐레이트합니다. 기본값은 "none"이며, 다른 값을 사용하려면 mappingFile 옵션을
지정해야 합니다.
-mappingfile=<file>
선택한 난독화 도구에 대한 매핑 파일.
-outputdir=<출력 디렉토리>
비교의 출력 파일이 상대 경로 파일인 경우에 사용할 기본 디렉터리입니다.
-ignoreerrors=true|false
옵션을 설정할 수 없는 비교에서 발생하는 오류를 무시하고 다음 비교로 계속 진행하십시오. 기본값은 "false"이며, 이는 첫
번째 오류가 발생하면 내보내기가 중단됨을 의미합니다.
-csvseparator=<구분자 문자>
CSV 내보내기의 필드 구분 문자입니다. 기본값은 ','입니다.
-bitmap=false|true
적절한 경우, 주요 콘텐츠에 대해 SVG 대신 비트맵 이미지를 내보내십시오. 기본값은 false입니다.
-sortbytime=false|true
지정된 스냅샷 파일을 수정 시간으로 정렬합니다. 기본값은 false입니다.
-listfile=<filename>
스냅샷 파일의 경로를 포함하는 파일을 읽습니다. 각 줄에는 하나의 스냅샷 파일이 포함되어 있습니다.
사용 가능한 비교 이름 및 옵션:
* Objects
옵션:
-format=html|csv
내보낸 파일의 출력 형식을 결정합니다. 존재하지 않으면, 출력 파일의 확장자로부터 내보내기 형식이 결정됩니다.
-viewfilters=<쉼표로 구분된 목록>
내보내기를 위한 뷰 필터를 설정합니다. 뷰 필터를 설정하면, 내보내기된 뷰에 지정된 패키지와 그 하위 패키지만 표시됩니다.
-viewfiltermode=startswith|endswith|contains|equals
뷰 필터 모드를 설정합니다. 기본값은 "contains"입니다.
-viewfilteroptions=casesensitive
뷰 필터에 대한 Boolean 옵션입니다. 기본적으로 옵션이 설정되어 있지 않습니다.
-aggregation=class|package|component
내보내기를 위한 집계 수준을 선택합니다. 기본값은 classes입니다.
-liveness=live|gc|all
내보내기를 위한 활성도 모드를 선택합니다. 즉, 활성 객체, 가비지 수집된 객체 또는 둘 다 표시할지를 선택합니다. 기본값은
활성 객체입니다.
-objects=recorded|heapwalker|all
기록된 객체, 힙 워커의 객체 또는 모든 객체 덤프의 객체 수를 비교합니다. 기본값은 .jps 파일의 경우 기록된 객체이고,
HPROF/PHD 파일의 경우 힙 워커입니다.
-dumpselection=first|last|label
비교 계산에 사용되는 모든 객체 덤프입니다. 기본값은 마지막 값입니다.
-label
dumpselection이(가) 'label'로 설정된 경우, 비교를 계산해야 하는 레이블의 이름입니다.
* AllocationHotSpots
옵션:
-format=html|csv
-viewfilters=<쉼표로 구분된 목록>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
내보내기를 위한 집계 수준을 선택합니다. 기본값은 methods입니다.
-liveness=live|gc|all
-unprofiledclasses=separately|addtocalling
프로파일되지 않은 클래스를 별도로 표시할지 호출 클래스에 추가할지를 선택합니다. 기본값은 프로파일되지 않은 클래스를 별도로
표시하는 것입니다.
-valuesummation=self|total
핫스팟의 시간이 어떻게 계산되는지를 결정합니다. 기본값은 "자체"입니다.
-classselection
특정 클래스 또는 패키지에 대한 비교를 계산합니다. 패키지는 단일 패키지의 경우 '.*'를, 재귀 패키지의 경우 '.**'를
추가하여 지정합니다. 패키지를 와일드카드와 함께 지정하십시오, 예를 들어 'java.awt.*'.
* AllocationTree
옵션:
-format=html|xml
-viewfilters=<쉼표로 구분된 목록>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-aggregation=method|class|package|component
-liveness=live|gc|all
-classselection
* HotSpots
옵션:
-format=html|csv
-viewfilters=<쉼표로 구분된 목록>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-firstthreadselection
특정 스레드 또는 스레드 그룹에 대한 비교를 계산합니다. 스레드 그룹을 'group.*'처럼 지정하고 특정 스레드 그룹 내의
스레드를 'group.thread'처럼 지정하세요. 스레드 이름의 점은 백슬래시로 이스케이프 처리하세요.
-secondthreadselection
특정 스레드 또는 스레드 그룹에 대한 비교를 계산합니다. 'firstthreadselection'이(가) 설정된 경우에만
사용할 수 있습니다. 비어 있는 경우, 'firstthreadselection'에 대한 동일한 값이 사용됩니다. 스레드 그룹을
'group.*'처럼 지정하고 특정 스레드 그룹 내의 스레드를 'group.thread'처럼 지정하세요. 스레드 이름의 점은
백슬래시로 이스케이프 처리하세요.
-threadstatus=all|running|waiting|blocking|netio
내보내기를 위한 스레드 상태를 선택합니다. 기본값은 "running"입니다.
-aggregation=method|class|package|component
-differencecalculation=total|average
호출 시간에 대한 차이 계산 방법을 선택합니다. 기본값은 총 시간입니다.
-unprofiledclasses=separately|addtocalling
-valuesummation=self|total
* CallTree
옵션:
-format=html|xml
-viewfilters=<쉼표로 구분된 목록>
-viewfiltermode=startswith|endswith|contains|equals
-viewfilteroptions=casesensitive
-firstthreadselection
-secondthreadselection
-threadstatus=all|running|waiting|blocking|netio
-aggregation=method|class|package|component
-differencecalculation=total|average
* TelemetryHeap
옵션:
-format=html|csv
-minwidth=<픽셀 수>
graph의 최소 너비(픽셀 단위)입니다. 기본값은 800입니다.
-minheight=<픽셀 수>
픽셀 단위로 graph의 최소 높이입니다. 기본값은 600입니다.
-valuetype=current|maximum|bookmark
스냅샷마다 계산되는 값의 유형입니다. 기본값은 현재 값입니다.
-bookmarkname
valuetype이(가) 'bookmark'로 설정된 경우, 값을 계산해야 하는 북마크의 이름입니다.
-measurements=maximum,free,used
비교 그래프에 표시되는 측정값입니다. 여러 값을 쉼표로 연결하십시오. 기본값은 'used'입니다.
-memorytype=heap|nonheap
분석할 메모리 유형입니다. 기본값은 'heap'입니다.
-memorypool
특수 메모리 풀을 분석하려면 이 매개변수에 이름을 지정할 수 있습니다. 기본값은 비어 있으며, 즉 특수 메모리 풀이 없습니다.
* TelemetryObjects
옵션:
-format=html|csv
-minwidth=<픽셀 수>
-minheight=<픽셀 수>
-valuetype=current|maximum|bookmark
-bookmarkname
-measurements=total,nonarrays,arrays
비교 그래프에 표시되는 측정값입니다. 여러 값을 쉼표로 연결하십시오. 기본값은 'total'입니다.
* TelemetryClasses
TelemetryObjects와 유사하지만 옵션이 변경되었습니다:
-measurements=total,filtered,unfiltered
* TelemetryThreads
TelemetryObjects와 유사하지만 옵션이 변경되었습니다:
-measurements=total,runnable,blocked,netio,waiting
* ProbeHotSpots
옵션:
-format=html|csv
-viewfilters=<쉼표로 구분된 목록>
-viewfiltermode=startswith|endswith|contains|equals|wildcard|regex
-viewfilteroptions=exclude,casesensitive
-firstthreadselection
-secondthreadselection
-metricindex=<number>
선택된 프로브의 메트릭을 선택합니다. 기본값은 1이며 "Duration"에 해당합니다. 선택된 프로브에 다른 메트릭이 있는
경우, 호출 트리 또는 핫스팟 프로브 뷰의 메트릭 선택기에서 원하는 메트릭의 인덱스를 지정할 수 있습니다.
"threadstatus" 매개변수는 duration 메트릭에만 영향을 미칩니다.
-threadstatus=all|running|waiting|blocking|netio
-aggregation=method|class|package|component
-differencecalculation=total|average
-probeid=<id>
프로브를 내보내야 하는 내부 ID입니다. 모든 사용 가능한 내장 프로브를 나열하고 사용자 정의 프로브 이름에 대한 설명을
보려면 "jpexport --listProbes"을 실행하세요.
* ProbeCallTree
ProbeHotSpots와 유사하지만 옵션이 변경되었습니다:
-format=html|xml
* ProbeTelemetry
TelemetryObjects와 유사하지만 추가되거나 변경된 옵션이 있습니다:
-measurements
측정값 비교 그래프에 표시되는 텔레메트리 그룹의 1 기반 인덱스입니다. 여러 값을 쉼표로 연결하여 "1,2"와 같이
입력하세요. 기본값은 모든 측정값을 표시하는 것입니다.
-probeid=<id>
-telemetrygroup
텔레메트리 그룹의 1 기반 인덱스를 설정합니다. 이는 프로브 텔레메트리 뷰 위의 드롭다운 목록에서 볼 수 있는 항목을
참조합니다. 기본값은 "1"입니다.
자동 출력 형식
대부분의 뷰와 비교는 여러 출력 형식을 지원합니다. 기본적으로 출력 형식은 출력 파일의 확장자로부터 유추됩니다:
-
.html
뷰 또는 비교 결과가 HTML 파일로 내보내집니다. HTML 페이지에서 사용되는 이미지가 포함된jprofiler_images라는 디렉터리가 생성됩니다. -
.csv
첫 번째 줄에 컬럼 이름이 포함된 CSV 데이터로 내보내집니다.
Microsoft Excel을 사용할 때 CSV는 안정적인 형식이 아닙니다. Windows의 Microsoft Excel은 국가 및 지역 설정에서 구분 기호를 가져옵니다. 기본적으로 JProfiler는 쉼표를 구분 기호로 사용합니다. 세미콜론과 같이 다른 CSV 구분 기호가 필요한 경우 전역
csvseparator옵션을 설정할 수 있습니다. -
.xml
데이터가 XML로 내보내집니다. 데이터 형식은 자체 설명적(self-descriptive)입니다.
다른 확장자를 사용하려는 경우, format 옵션을 사용하여 출력 형식 선택을 오버라이드할 수 있습니다.
스냅샷 분석
생성된 스냅샷에 힙 덤프가 포함되어 있는 경우, bin/jpanalyze 실행 파일을 사용하여 힙 덤프 분석을 사전에 준비할
수 있습니다.
이렇게 하면 JProfiler GUI에서 스냅샷을 매우 빠르게 열 수 있습니다. 이 도구의 사용법 정보는 아래와 같습니다:
사용법: jpanalyze [옵션] "스냅샷 파일" ["스냅샷 파일" ...]
"snapshot file"은 다음 확장자를 가진 스냅샷 파일입니다:
.jps, .hprof, .hpz, .phd, .jfr
[options]는 -option=value 형식의 옵션 목록입니다.
옵션:
-obfuscator=none|proguard|yguard
선택한 난독화 도구에 대해 디옵스큐레이트합니다. 기본값은 "none"이며, 다른 값을 사용하려면 mappingFile 옵션을
지정해야 합니다.
-mappingfile=<file>
선택한 난독화 도구에 대한 매핑 파일.
-removeunreferenced=true|false
참조되지 않거나 약하게 참조된 객체를 제거해야 하는 경우.
-retained=true|false
가장 큰 객체의 유지 크기를 계산합니다. removeunreferenced가 true로 설정됩니다.
-retainsoft=true|false
참조되지 않은 객체가 제거될 경우, 소프트 참조를 유지할지 여부를 지정합니다.
-retainweak=true|false
참조되지 않은 객체가 제거될 경우, 약한 참조를 유지할지 여부를 지정합니다.
-retainphantom=true|false
참조되지 않은 객체가 제거되면, 팬텀 참조를 유지할지 여부를 지정합니다.
-retainfinalizer=true|false
참조되지 않은 객체가 제거될 경우, finalizer 참조를 유지할지 여부를 지정합니다.
removeUnreferenced, retained 및 모든 retain* 명령줄 옵션은 힙 워커 옵션
대화상자의 옵션에 해당합니다.