🔥 핫스왑이 적용되지 않을 때 해결 방법
- 디버그 모드로 실행했는지 확인
- 핫스왑은 Debug 모드에서만 동작합니다.
- Run이 아닌 Debug 실행 (Shift + F9) 으로 실행하세요.
- JVM 옵션 확인
- Help > Edit Custom VM Options에서 -XX:+AllowEnhancedClassRedefinition 옵션이 포함되었는지 확인
- 없으면 추가 후 IDE 재시작
- Spring Boot DevTools와 충돌 확인
- spring-boot-devtools를 사용하면 자동으로 앱을 재시작하는 기능이 활성화됩니다.
- spring.devtools.restart.enabled=false로 설정하면 핫스왑과 DevTools가 잘 동작합니다.
✅ Tomcat 핫스왑 적용 방식 정리
Q1. 디버그 모드에서 실행하다가 수정하면 새로고침하면 바로 적용되나요?
A. 네, 바로 적용됩니다!
- 단, 핫스왑이 지원하는 Java 코드 수정 범위 내에서만 적용됩니다.
- JSP, HTML, CSS, JS 파일 수정 시에는 브라우저 새로고침(F5)만 해도 반영됩니다.
- 클래스 메서드 내부 로직 변경은 핫스왑 적용됨 ✅
- 새로운 메서드, 필드 추가 또는 인터페이스 변경 시 핫스왑이 적용되지 않아 서버 재시작 필요 ❌
Q2. 자동으로 계속 빌드되나요? 아니면 수정할 때만 빌드되나요?
A. 수정할 때만 빌드됩니다.
- Build project automatically를 켜면 코드 수정 후 IDE가 일정 시간 후 자동 빌드
- 기본적으로 약 3초~5초 후 빌드가 실행됨
- 빌드 타이밍을 수동으로 조정하려면 Ctrl + Shift + F9 (Mac: Cmd + Shift + F9)를 눌러 강제 빌드 가능
Q3. 수정하고 빌드하는 시간이 필요한가요?
A. 네, 하지만 대부분 빠르게 적용됩니다!
- 빌드하는 시간은 프로젝트 크기와 변경된 코드 양에 따라 다름
- 간단한 수정 (메서드 내부 변경) → 1~2초 내 반영
- 복잡한 변경 (클래스 추가, 필드 변경 등) → 핫스왑 불가능, 서버 재시작 필요
✅ 핫스왑이 제대로 동작하는 경우:
- Tomcat을 디버그 모드(Shift + F9)로 실행
- Ctrl + Shift + F9 또는 자동 빌드로 클래스 변경 사항 적용
- 브라우저 새로고침(F5) → 변경 사항 즉시 반영됨
❌ 핫스왑이 적용되지 않는 경우:
- 새로운 메서드, 필드, 인터페이스 변경 시 핫스왑 불가능 → 서버 재시작 필요
- Build Automatically가 꺼져 있으면 수동으로 빌드 필요
- 일반 실행(Run Mode)으로 실행했을 경우 핫스왑 미적용됨
🚀 핫스왑을 최적화하는 추가 팁
1. 빌드 타이밍을 조절하고 싶다면?
- Registry 설정에서 compiler.automake.allow.when.app.running 활성화
- Ctrl + Shift + A (Mac: Cmd + Shift + A) → "Registry" 검색
- compiler.automake.allow.when.app.running 체크 ☑
2. 빌드 속도를 더 빠르게 하려면?
- File > Settings > Compiler > Build process heap size 값을 기본 700MB → 2048MB로 증가
- Gradle/Maven 캐시 정리 (Invalidate Caches & Restart)
✅ Build Process Heap Size를 늘리면 어떤 일이 일어날까?
1. 빌드 속도 향상
- IntelliJ IDEA가 빌드를 실행할 때, 빌드 과정에서 사용하는 메모리(RAM) 크기를 늘려줌
- 빌드 과정에서 많은 클래스를 컴파일할 때, 메모리 부족 문제를 방지하고 병렬 처리를 더 원활하게 수행
- 특히 대형 프로젝트에서는 빌드 시간이 단축됨
2. GC(가비지 컬렉션) 감소
- Heap Size가 작으면, 빌드 중 메모리가 부족할 때마다 불필요한 GC(가비지 컬렉션) 이 발생하여 빌드 시간이 지연됨
- Heap Size를 늘리면, 불필요한 GC 실행 횟수가 줄어들어 빌드가 더 빠르게 진행됨
3. Gradle/Maven 빌드 최적화
- Gradle이나 Maven을 사용하는 프로젝트에서는 빌드 중 캐싱, 의존성 확인, 테스트 실행 등에서 더 많은 메모리를 사용할 수 있어 속도가 향상됨
❗ Heap Size를 마음대로 늘려도 괜찮을까?
Heap Size를 너무 크게 설정하면 IDE 전체 성능이 저하될 수 있음!
💡 적절한 메모리 설정이 중요함
💾 권장 설정 (RAM 용량에 따라 조정)
시스템 RAMBuild Process Heap Size 추천값
8GB | 1024MB ~ 2048MB |
16GB | 2048MB ~ 4096MB |
32GB 이상 | 4096MB ~ 8192MB |
✅ 설정 방법:
- File > Settings > Build, Execution, Deployment > Compiler 이동
- Build process heap size (Mbytes) 값을 기본 700MB → 2048MB 이상으로 변경
- Apply 후 IntelliJ 재시작
💡 Tip:
- 8GB RAM 이하에서는 2048MB 이상으로 설정하면 IDE 전체 속도가 느려질 수 있음
- 16GB 이상 RAM을 사용한다면 4096MB까지 설정 가능
- 너무 크게 설정하면 오히려 메모리를 낭비하게 됨 → 적절한 테스트 후 최적값을 찾는 것이 중요!
🚀 추가적인 빌드 속도 최적화 방법
1️⃣ Gradle/Maven 빌드 속도 최적화
- Gradle 사용 시 gradle.properties에 다음 설정 추가
properties복사편집org.gradle.daemon=true org.gradle.parallel=true org.gradle.configureondemand=true
- Maven 사용 시 pom.xml에 아래 속성 추가
xml복사편집<configuration> <fork>true</fork> <argLine>-Xmx2048m</argLine> </configuration>
2️⃣ 불필요한 인덱싱(Indexing) 줄이기
- Help > Change Memory Settings에서 IDE Heap Size도 조정 (예: 2048MB → 4096MB)
- File > Settings > Editor > General > Auto Import에서 "Optimize imports on the fly" 비활성화
3️⃣ "Registry" 설정 최적화
- Ctrl + Shift + A (Mac: Cmd + Shift + A) → "Registry" 검색
- compiler.automake.allow.when.app.running 체크 ☑
→ 자동 빌드를 실행 중에도 수행할 수 있도록 설정
'IntelliJ' 카테고리의 다른 글
🖥️ 인텔리제이(IntelliJ) 가독성을 높이는 필수 플러그인 추천 🔥 (0) | 2025.03.04 |
---|---|
IntelliJ에서 SpotBugs 플러그인 활용하기 (0) | 2025.02.27 |
IntelliJ IDEA 코드 실시간 반영(Hot Swap) 설정 및 활용법 (0) | 2025.02.14 |
인텔리제이 단축키 완벽 가이드! 생산성을 높이는 팁 🔥💻 (1) | 2025.02.14 |
IntelliJ 우측 메이븐 기능들 활용법 🌟 (0) | 2025.02.12 |