2014-06-23 5 views
2

어떤 시점에서 결국 "schema.sql"과 일치하는 문자열을 생성하는 Java 프로그램이 있습니다. 소스 코드에서 이것이 어디에서 일어나는지 알고 싶습니다. 소스 코드에서 "schema.sql"을 검색해도 위치가 산출되지 않습니다. 대신 프로그램은 런타임에 문자열을 작성해야합니다. 나는 단지 어디에 있는지 모른다. 내 프로젝트의 일부 라이브러리에서 발생합니다. 내 프로그램에서이 문자열을 만드는 위치를 어떻게 찾을 수 있습니까?런타임 힙 분석;

"schema.sql"과 일치하는 문자열을 런타임에 어떻게 든 볼 수 있습니까? 나는 VisualVM과 같은 것을 보았지만 힙의 실행 상태가 아닌 힙 덤프 만 분석하는 것처럼 보입니다. 이것을 할 수있는 방법이 있어야합니다. 어떤 아이디어?

1) 세션 시작 대화 상자에서 적절한 할당 기록 프로파일을 구성하여 시작시 할당 녹화를 시작합니다

+0

왜이 작업을 수행하려고합니까? –

+0

어째서 어딘가에 "schema.sql"문자열이 있는지 확신 할 수 있습니까? –

+0

@ElliottFrisch "class.sql"이라는 클래스 패스에서 SQL 스크립트를 실행하는 라이브러리가 프로젝트에 있습니다. 라이브러리가이 파일의 경로를 지정하는 문자열을 구성한다고 가정합니다. 이 문자열은''schema.sql ''과 일치합니다. 사실, 디버깅하는 동안 런타임에 찾았으며 문자열은''classpath * : schema-all.sql, classpath * : schema.sql ''입니다. 기본적으로,'x == "foo"'와 같은 것뿐만 아니라 프로그램 내의 모든 문자열을 분석하는 향상된 조건부 중단 점을 원합니다. – dgtc

답변

2

는 다음과 같은 단계를 JProfiler으로 그렇게 할 수 있습니다. 당신이 문자열이

3를 만들어 졌는지 생각 후

enter image description here

2) 새로운 개체를 만드는 데 힙 워커의 클래스 뷰에서 java.lang.String 행을 두 번 클릭) 힙 스냅 샷을 모든 문자열로 설정

받는 4) 스위치와 스트를 입력 "선택된 값을 제한함으로써> 필터 - 적용"

5)를 선택하여 문자열 검색 "을 보내는 참조보기" NG 값

enter image description here

6) 할당보기로 전환하고

enter image description here

책임의 한계와 법적 고지 스택 추적을 확인 : 우리 회사가 JProfiler와는 개발하고 있습니다.