피드로 돌아가기
Dev.toBackend
원문 읽기
Deterministic Parsing과 LLM Reasoning 분리를 통한 JVM 진단 최적화
I Built a JVM Profiler That Points AI at Your Exact Line of Broken Code — Here's How It Works Under the Hood
AI 요약
Context
기존 JVM 진단 도구는 Heap Dump나 Thread Dump의 분석 결과와 실제 소스 코드 라인 간의 매핑 과정에서 수동 작업이 발생하는 'Last Mile' 문제 존재. 대용량 바이너리 데이터(2~8GB)의 LLM 직접 입력은 Context Window 제한 및 PII 유출 리스크로 인해 불가능한 구조임.
Technical Solution
- Deterministic Parsing과 LLM Reasoning의 책임 분리 설계
- Eclipse MAT 및 GCToolkit을 통한 HPROF/GC 로그의 정형 데이터 추출
- JavaParser와 Eclipse JDT를 활용한 AST 기반 소스 코드 인덱싱 및 Allocation Site 매핑
- 런타임 클래스 명칭을 파일:메서드:라인 단위의 구조화된 JSON(약 2KB)으로 변환하는 Correlation Engine 구축
- 변환된 정형 데이터만을 LLM에 전달하여 Hallucination을 방지하고 정확한 코드 수정 제안 유도
- Electron 환경 내 Spring Boot JAR 패키징을 통한 로컬 독립 실행 환경 구현
실천 포인트
- LLM 도입 시 비정형 데이터 직접 입력 대신 정밀한 파싱 단계(Deterministic Step)를 선행하여 입력 토큰 최적화 및 정확도 향상 검토 - 대규모 바이너리 분석 도구 설계 시 데이터 유출 방지를 위해 Local Parsing 후 요약 정보만 외부 API로 전송하는 아키텍처 채택 - 정적 분석(AST)과 런타임 데이터(Heap Dump)의 매핑 시 다중 모듈 빌드 및 Lombok 생성 코드 등 엣지 케이스 고려