2011-03-22 2 views
4

다른 동시성 논리를 사용하는 두 가지 버전의 Java 응용 프로그램이 있습니다.
나는 더 나은 것을 사용할 수 있도록 그들의 성능 (잠금을 획득 한 시간 등)을 분석하고 비교하려고합니다.Java 응용 프로그램 용 잠금 분석기

IBM Lock Analyzer for Java를 발견했지만 오픈 소스도 아니고 JDK 버전과도 독립적입니다.
IBM® 제공 Java ™ SDK 또는 JRE가 필요합니다.

IBM에서 또 다른 도구는 멀티 코어 소프트웨어 개발 키트이며, 다음과 같은 문제가

"썬 JDK에 실행, 잠금 분석 도구를 제외하고 MSDK의 테스트 및 분석 도구입니다. 성능 도구 IBM JDK가 필요합니다. "

그럼 Sun/Oracle Java에서 작동하는 잠금 분석 도구를 추천 할 수 있습니까?

+1

YourKit이 Oracle Java에 대해이 작업을 수행 할 것으로 믿습니다. 그것도 무료가 아니지만 당신은 평가 라이센스를 얻을 수 있습니다. –

+0

감사합니다. 내 요구 사항을 충족시키는 지 확인하기 위해 YourKit을 살펴보십시오. –

답변

2

는 여기에 내가 명령 줄에서 운영 환경에서 잠금 경합을 찾기 위해 여러 번 사용했습니다 속임수 :

watch -n1 'jstack [pid] | grep -A 1 BLOCKED | grep -v BLOCKED | grep -v \\-\\-' 

뿐만 아니라 그것은 무료, 실질적으로 오버 헤드가 없다입니다. 물론 통계 또는 멋진 UI를 제공하지는 않지만 시각적 인 방법으로 실시간 잠금 문제를 분명하게 나타냅니다. 본질적으로 이것은 차단 된 스레드를 찾기 위해 매 초마다 샘플링합니다. 서버로드가 충분하면 비교할 수 있어야합니다.

YourKit은 좋은 상업 옵션입니다.

+0

나는 YourKit을 조사 할 것이다. BTW 귀하의 방법은 리눅스 기계만을위한 것이고 나는 우리가 분석 할 필요가있는 리눅스와 윈도우 어플리케이션을 모두 가지고 있다는 것을 잊어 버렸습니다. –

+1

아, 좋아. 로드 중 잠금 경합을 찾는 저렴한 방법에 관심이 있다면 고려해야 할 두 가지 사항은 다음과 같습니다. 1) Cygwin을 설치하여 제안한 명령을 실행하거나 2) Linux에서 배포 할 응용 프로그램을 계속 분석 할 수 있습니다. Windows. 그것은 결국 Java입니다. – WhiteFang34

+0

그래, 그것은 자바 afterall이야. :) –