2012-10-23 3 views
1

VisualVM은 특정 메소드가 실행하는 데 오랜 시간이 걸린다는 것을 보여줍니다.저속 Java 메소드 디버깅

Java 메소드의 성능 (시간과 관련하여)을 조사하기 위해 널리 사용되는 전략이 있습니까?

VisualVM이보고하고있는 호출 계층 구조의 어딘가에있는 메소드에서 부진한 응답 시간이 생길 거라는 생각이 들지만, 하드 번호를 가져 오는 것이 가정을 기반으로하는 코드에서 낚시하는 것보다 낫다고 생각합니다. 성능면에서.

+0

VisualVM은 메서드가 아닌 전체 호출 스택을 사용하여 시간을 구성하므로 호출자가 시간을 소비하게하는 메서드 호출까지 항상 드릴 다운 할 수 있습니다. –

답변

2

VisualVM은 대부분의 CPU를 사용하는 방법을 보여 주어야합니다. 가장 큰 사용자가 귀하의 방법 인 경우 개별적으로 작게 보이지만 합계가 더 많은 많은 방법을 호출하지 않는 한 귀하가 전화하는 방법이 아님을 의미합니다.

이 메소드가 호출하는 메소드와 총합의 차이점을 제안 해주십시오. 그것이 당신의 방법이 프로파일 링되는 것을 추가하는 정도입니다. 참고 : 프로파일 러에 오버 헤드가 있으므로 프로파일 링하지 않을 때 추가되는 양은 적습니다.

+0

안녕하세요. 의견을 주셔서 감사하지만 나는 개별적으로 작게 보이지만 총체적으로 보이는 방법에 관해서 당신이 의미하는 바가 무엇인지에 대해 확신 할 수 없습니다. 그리고 "이 방법이 귀하의 총계와 전화하는 방법의 차이점을 생각해보십시오." – csilk

+0

메소드에 소요 된 시간은 호출하는 모든 메소드를 포함 할 수 있습니다. methodA가 methodB 및 methodC를 호출하고 이들이 10 초, 2 초 및 3 초 걸리는 경우 methodA는 10-2-3 = 5 초를 추가합니다. –

+0

모든 메소드 실행 시간의 합계는 제가 사용하고있는 측정 기준입니다. – csilk

1

JProfiler, Yourkit 등의 도구를 사용해야합니다. 깊이있는 코드 &을 프로파일 링하여 어떤 방법이 많은 시간을 들여야하는지 정확하게 파악할 수 있습니다. 이러한 도구로 원하는 깊이의 계층 구조로 이동할 수 있습니다.