환경 확인

java -version               # Java 버전
javac -version              # 컴파일러 버전
echo $JAVA_HOME             # JAVA_HOME 경로
which java                  # Java 설치 위치

실행

JAR 실행

java -jar app.jar                    # 기본 실행
java -jar app.jar --server.port=8080  # 인자 전달

JVM 옵션

# 메모리 설정
java -Xms512m -Xmx2g -jar app.jar
 
# GC 설정
java -XX:+UseG1GC -jar app.jar
 
# 디버깅 모드
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar app.jar

프로세스 관리

Java 프로세스 확인

jps                  # Java 프로세스 목록
jps -l              # 메인 클래스와 인자 포함
jps -v              # JVM 인자 포함

스레드 덤프

jstack <pid>                    # 스레드 덤프
jstack -l <pid>                 # Lock 정보 포함
jstack <pid> > thread_dump.txt  # 파일로 저장

힙 덤프

jmap -dump:format=b,file=heap.hprof <pid>
jmap -histo:live <pid>          # 라이브 객체 히스토그램

Maven/Gradle

Maven

mvn clean install              # 빌드 및 로컬 저장소에 설치
mvn clean package              # JAR 생성
mvn dependency:tree           # 의존성 트리
mvn spring-boot:run           # Spring Boot 실행

Gradle

./gradlew build               # 빌드
./gradlew test                # 테스트 실행
./gradlew bootRun             # Spring Boot 실행
./gradlew dependencies        # 의존성 확인

문제 해결

포트 충돌 확인

lsof -i :8080                 # 포트 사용 프로세스
netstat -tulpn | grep 8080    # Linux

메모리 부족

# 힙 메모리 증가
java -Xmx4g -jar app.jar
 
# PermGen/Metaspace 증가
java -XX:MaxMetaspaceSize=512m -jar app.jar

관련 페이지