자신의 모니터 구축[1]-모니터링 도구
모니터 의 목적 은 무엇 입 니까?모니터 는 주로 프로그램 이 주로 어떤 곳 에서 자원 을 소모 하 는 지 검사 하기 위해 cpu 자원,메모리 자원 등 을 포함 할 수 있 습 니 다.모니터 를 이용 하여 방법의 소모 시간 을 분석 할 수 있 고 프로그램 이 차지 하 는 메모리 자원 을 분석 할 수 있다.모니터 가 분석 한 정보 에 따라 맞 춤 형 최적화 가 가능 하 다.
기 존의 모니터링 방식
1.
가장 쉬 운 방법
System.out.println()
이런 방식 은 가장 자주 사용 되 는 가장 간단 한 추적 프로그램의 운행 상황 을 개방 해 야 한다.한 가지 방법 이 있다.
public void sayHello(){
Thread.sleep(1000);
print("hello world");
}
이 방법의 시간 을 알 고 싶다 면 어떻게 해 야 합 니까?가장 자주 사용 하 는 방법 은 방법 체 앞 뒤에 시간 스탬프 를 넣 는 것 이다.다음 과 같다.public void sayHello(){
long startTime = System.currentTimeMillis();
Thread.sleep(1000);
print("hello world");
long endTime = System.currentTimeMillis();
System.out.println(" :"+(endTime-startTime)+"ms");
}
이것 은 가장 원시 적 인 방법 일 것 이다.이 방법의 장점 은 간단 하고 사용 하기 쉽다 는 것 이다.방법 전후 에 코드 를 삽입 하면 되 지만 매우 부족 하 다.
우선,그것 은 완전히 수공 으로 업무 코드 와 결합 성 이 매우 높 을 수 있 습 니 다.그 코드 를 모니터링 하려 면 어떤 방법 에 비슷 한 코드 를 삽입 한 다음 에 다시 컴 파일 하고 포장 하 며 배치 해 야 합 니까?모니터링 하고 나 면 요?위의 코드 를 삭제 하고 다시 포장 하여 배치 합 니 다.(스마트 하 게 할 수 있 습 니 다.위의 코드 세그먼트 에 스위치 를 추가 할 수 있 습 니까?하지만 전체적으로 좌절 되 었 습 니 다.뭐라고 요?)
그 다음 에 이런 수공 방식 으로 감 측 할 수 있 는 부분 이 너무 좁 아서 한 번 쓰 면 감 측 방법 만 소모 할 수 있 고 다음 에 감 측 방법 집행 횟수 를 측정 하려 면 다시 한 부 써 야 한다.
2、
jdk 자체 hprof:위의 이런 방식 의 결함 이 매우 뚜렷 합 니 다.다행히 JDK 자체 도 분석 할 수 있 는 도 구 를 제공 합 니 다.예 를 들 어
J2SE 에 서 는 자바 프로그램의 cpu 와 힙 을 profiling 하 는 간단 한 명령 행 도 구 를 제공 합 니 다.HPOF 라 고 합 니 다.HPOF 는 실제 JVM 의 native 라 이브 러 리 로 JVM 이 시 작 될 때 명령 행 인 자 를 통 해 동적 으로 불 러 오고 JVM 프로 세 스 의 일부분 이 됩 니 다.자바 프로 세 스 가 시 작 될 때 HPOF 를 사용 하려 면 사용 자 는 다양한 명령 행 매개 변수 형식 을 통 해 HPOF 를 사용 하여 자바 프로 세 스 의 힙 이나(와)cpu 를 profiling 하 는 기능 을 할 수 있 습 니 다.HPROF 에서 발생 하 는 profiling 데 이 터 는 바 이 너 리 일 수도 있 고 텍스트 형식 일 수도 있 습 니 다.이 로 그 는 자바 프로 세 스 의 성능 문제 와 병목 을 추적 하고 분석 하 며 메모리 사용 에 있어 서 좋 지 않 은 부분 이나 프로그램 실현 에 있어 서 좋 지 않 은 점 을 해결 할 수 있 습 니 다.바 이 너 리 형식의 로 그 는 JVM 의 HAT 도구 에 의 해 탐색 되 고 분석 되 며 자바 프로 세 스 의 힙 의 다양한 유형 과 데이터 의 상황 을 관찰 할 수 있 습 니 다.hprof 에 관 한 학습 글 이 있 습 니 다.관심 있 는 것 은 볼 수 있 습 니 다http://longmans1985.blog.163.com/blog/static/706054752011715112723303/
그러나 hprof 도 자신의 제한 이 있다.
hprof 는 전체 JVM 용기 안의 상황 을 분석 하고 우리 가 원 하지 않 는 정보 가 많 습 니 다.예 를 들 어 jboss 를 실행 할 때 hprof 는 jboss 의 정 보 를 분석 합 니 다.그리고 우리 가 필요 로 하 는 정 보 는 스스로 코드 를 응용 하 는 것 일 뿐 jboss,심지어 다른 3 자 라 이브 러 리 가 필요 하지 않 습 니 다.
그리고 hprof 분석 프로그램 을 이용 하 는 것 이 비교적 느 립 니 다.hprof 를 이용 하여 프로그램 을 실행 하 는 것 이 20 배 느 릴 것 이 라 고 합 니 다.이것 은 제 가 테스트 한 적 이 없습니다.그러나 hprof 를 이용 하여 장시간 응용 프로그램 을 분석 하 는 것 은 분명 적절 하지 않다.
System.currentTimeMillis()
과 hprof 외 에 다른 분석 도구 도 있다.기 존의 방식 을 제외 하고
우 리 는 또한 자신의 모니터 를 구축 할 수 있다.주로 자바 instrumentation 과 자바 대 리 를 이용 하여 이 루어 진다.javaagent 와 instrumentation 이라는 것 은 이미 신선 한 것 이 아 닙 니 다.JDK 5 때 도 입 된 JDK 6 에 새로운 특성 이 생 겼 습 니 다.많은 모니터링 도 구 는 모두 instrumentation 의 기초 위 에 구 축 된 것 이다.예 를 들 어 btrace,JIP 등 이다.자바 instrumentation 에 관 한 자 료 는 인터넷 에서 검색 해 보 니 많은 것 같 지만 유용 한 자 료 는 그 몇 편 입 니 다.
다음 편 에 서 는 자바 에이전트 를 어떻게 사용 하 는 지 배 워 보 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.