CodeGym
프로모션
학습
강좌
과제
설문 & 퀴즈
게임
도움말
일정
커뮤니티
사용자
포럼
채팅
아티클
성공 사례
활동
후기
구독
라이트 테마

강의

  • 리뷰
  • 회사 소개
시작
학습 시작
Start learning now
  • 진행 상황
  • 코스
  • 퀘스트 맵
  • 레슨
  • 리플렉션을 통한 객체 생성

    JAVA 25 SELF
    레벨 62,레슨 3
    런타임에 객체를 생성하고 클래스에 접근하는 방법: 왜 Class.newInstance()가 더 이상 권장되지 않는지, getConstructor/ getDeclaredConstructor와 Constructor.newInstance를 올바르게 사용하는 법, Method.invoke로 메서드를 호출하고 Field로 필드를 읽고/수정하는 법을 다룹니다. 대표적인 예외들( ReflectiveOperationException 등), 모듈 시스템의 제약, 유용한 실무 팁, 그리고 동적 인스턴스 생성을 위한 미니 유틸리티까지. 보너스 — 전체 과정을 한눈에 보는 도식도 포함되어 있습니다.
    사용 가능
  • 리플렉션과 의존성 주입 (Dependency Injection)

    JAVA 25 SELF
    레벨 62,레슨 4
    이 강의에서는 Java에서의 리플렉션 실무를 다룹니다: Class, Field, Method를 통해 private 필드를 읽고( setAccessible( true)) 간단한 직렬화기를 만드는 방법; DI 컨테이너가 애노테이션( @Inject, @Autowired)을 통해 생성자와 필드로 의존성을 주입하는 방식; Proxy와 InvocationHandler 기반의 동적 프록시가 호출을 가로채는 방식; 이것이 실제로 어디에 쓰이는지( Spring, JUnit, Jackson)와 어떤 제한과 오류가 있는지를 살펴봅니다.
    사용 가능
  • 로깅 기초: java.util.logging, Log4j, SLF4J

    JAVA 25 SELF
    레벨 63,레슨 0
    애플리케이션에 로그가 왜 필요한지, 그리고 단순한 System.out.println이 프로덕션에서는 왜 충분하지 않은지 설명합니다. 레벨 ERROR/ WARN/ INFO/ DEBUG/ TRACE, 표준 java.util.logging과 설정 파일 logging.properties를 살펴보고, Log4j 2, Logback 및 파사드 SLF4J를 소개합니다. 콘솔 출력과 비교하고, 의존성을 추가하며, 구성 및 사용에서 흔한 실수를 정리합니다.
    사용 가능
  • 로그 포맷팅과 레벨: 모범 사례 (best practices)

    JAVA 25 SELF
    레벨 63,레슨 1
    좋은 로그 메시지가 무엇으로 구성되는지(시간, 레벨 INFO/ ERROR, 로거 이름, 텍스트, 스택), SLF4J/Log4j2 템플릿을 통한 올바른 포맷팅( "{}"를 문자열 연결 대신 사용), 예외를 어떻게 로깅할지( logger.error(..., ex)), 언제 ERROR/ WARN/ INFO/ DEBUG/ TRACE 레벨을 사용할지, 그리고 베스트 프랙티스: 민감한 데이터는 제외, 이해하기 쉬운 메시지, 상관관계 ID( orderId, userId) 사용, 올바른 log4j2.xml 구성에 대해 다룹니다.
    사용 가능
  • 멀티스레드 및 웹 애플리케이션에서의 로깅

    JAVA 25 SELF
    레벨 63,레슨 2
    멀티스레드와 웹 환경에서 신뢰할 수 있는 로그를 만드는 방법: 준비된 라이브러리( Logback, Log4j 2, java.util.logging)의 스레드 안전성, MDC 컨텍스트로 requestId 전달, Spring 필터 및 오류 처리기와의 통합, System.out과의 차이, 스레드 풀의 주의점과 마이크로서비스에서의 추적(traceId, OpenTelemetry). 실용적인 예제와 흔한 실수를 다루며, SLF4J와 Logger를 static final 필드로 사용합니다.
    사용 가능
  • JVM 모니터링: JMX, VisualVM, Java Flight Recorder

    JAVA 25 SELF
    레벨 63,레슨 3
    이 강의는 실전 JVM 모니터링 가이드입니다. JVM의 표준 메트릭을 JMX와 JConsole로 읽는 방법, VisualVM에서 메모리와 스레드를 시각적으로 관찰하고 메서드를 프로파일링하는 방법( heap dump 및 thread dump 포함), 그리고 Java Flight Recorder로 “블랙박스”를 기록하고 JDK Mission Control에서 분석하는 방법을 다룹니다. 실행 옵션( -XX:StartFlightRecording)을 보여 주고, GC/스레드 분석의 전형적인 시나리오와 흔한 실수를 설명합니다.
    사용 가능
  • 프로파일링과 코드 최적화: 도구와 접근법

    JAVA 25 SELF
    레벨 63,레슨 4
    프로파일링이 모니터링과 어떻게 다른지, 어떤 지표가 중요한지(메서드 실행 시간, 메모리, 스레드, 락), 그리고 어떤 도구를 사용해야 하는지: VisualVM, Java Flight Recorder, 그리고 상용 프로파일러들을 다룹니다. 실습으로 “느린” 계산기를 분석하고, “핫스폿”을 찾는 법, heap dump를 분석하는 법, 알고리즘 교체, 할당(allocations) 감소, 캐싱으로 병목을 제거하는 법을 배웁니다. 마지막에는 최적화 프로세스의 시각적 다이어그램과 흔한 실수들을 정리합니다.
    사용 가능
  • JVM의 메모리 구조: 스택, 힙, PermGen/MetaSpace

    JAVA 25 SELF
    레벨 64,레슨 0
    JVM 프로세스에서 지역 변수, 객체, 클래스 메타데이터가 어디에 배치되는지 살펴봅니다. 스레드 스택, 힙, 그리고 PermGen → MetaSpace의 진화를 해부합니다. GC가 어떻게 동작하는지, 어떤 메모리 오류가 있는지 ( StackOverflowError, OutOfMemoryError), 그리고 실행 플래그 ( -Xss, -Xmx, -XX:MaxMetaspaceSize)가 어떤 영향을 주는지도 이야기합니다. 도식, mermaid 다이어그램, 그리고 실동 예제가 함께 제공됩니다.
    사용 가능
  • 가비지 컬렉터: G1, ZGC, Shenandoah, 비교

    JAVA 25 SELF
    레벨 64,레슨 1
    이 강의에서는 가비지 컬렉터( GC)가 JVM에서 어떻게 동작하는지, 고전적인 Serial/ Parallel/ CMS와 최신의 G1, ZGC, Shenandoah의 차이, Young/Old 세대가 무엇인지, 왜 Stop-the-World 일시정지가 발생하고 어떻게 최소화하는지 알아봅니다. 또한 실습으로 다양한 GC를 플래그( -XX:+UseG1GC, -XX:+UseZGC, -XX:+UseShenandoahGC)로 활성화하는 방법, 일시정지 목표( -XX:MaxGCPauseMillis)와 힙 크기( -Xms/ -Xmx) 설정, 로그( -Xlog:gc*) 읽기, 그리고 전형적인 실수(예: System.gc() 강제 호출)를 피하는 방법을 살펴봅니다.
    사용 가능
  • 지역 변수, 메모리 누수, 약한 참조

    JAVA 25 SELF
    레벨 64,레슨 2
    이 강의에서는 지역 변수가 어디에 존재하는지(스레드 스택)와 그것이 힙과 어떻게 다른지, GC가 있음에도 불구하고 Java에서 메모리 누수가 왜 발생할 수 있는지 그리고 어떻게 피할 수 있는지를 알아봅니다. 실제 시나리오를 다룹니다: “영원한” static-컬렉션, 구독 해지되지 않은 리스너와 캐시. 참조의 가족인 SoftReference, WeakReference, PhantomReference 그리고 컨테이너 WeakHashMap을 살펴봅니다. 누수를 고치는 연습을 하고, 왜 System.gc() 호출이 JVM에 대한 힌트일 뿐 명령이 아니며, OutOfMemoryError로 어떻게 끝날 수 있는지도 논의합니다.
    사용 가능
  • 메모리 분석 도구: jmap, jvisualvm

    JAVA 25 SELF
    레벨 64,레슨 3
    JVM에서 메모리 문제를 진단하는 실무 가이드: jmap 유틸리티로 힙 스냅샷( heap dump)을 찍고, -heap과 -histo로 요약을 읽으며, jvisualvm에서 애플리케이션을 탐색합니다( Monitor, Heap Dump, Threads, Profiler 탭). 예제로 누수를 분석하고 Eclipse MAT 및 jconsole도 살펴봅니다. 끝에는 흔한 실수와 팁을 정리합니다.
    사용 가능
  • 메모리 작업 시 흔히 하는 실수 해부

    JAVA 25 SELF
    레벨 64,레슨 4
    실전 관점에서 왜 Java 애플리케이션이 “메모리 누수”로 느려질 수 있는지 살펴봅니다: 잊힌 리스너( addActionListener/ removeActionListener), 영원히 남는 정적 컬렉션, 닫지 않은 리소스(팁: try-with-resources), 참조를 붙들고 있는 익명/내부 클래스, 그리고 System.gc() 남용. GC 로그 읽기( -Xlog:gc*, -XX:+PrintGCDetails), 수집기 선택, WeakHashMap 기반 캐시 구축, 모니터링( jvisualvm, jconsole), 힙 덤프 분석, -Xmx/ -Xms 올바른 설정까지 다룹니다. 마지막에는 실제 누수 사례와 해결 방법을 소개합니다.
    사용 가능
  • 1
  • ...
  • 27
  • 28
  • 29
  • 30
학습
  • 등록
  • Java 과정
  • 과제 도움
  • 요금
  • 게임 프로젝트
  • Java 문법
커뮤니티
  • 사용자
  • 아티클
  • 포럼
  • 채팅
  • 성공 사례
  • 활동
  • 제휴 프로그램
회사
  • 회사 소개
  • 연락처
  • 후기
  • 보도자료실
  • CodeGym for EDU
  • FAQ
  • 지원
CodeGymCodeGym 은(는) 처음부터 Java 프로그래밍을 배우기 위한 온라인 코스입니다. 이 과정은 초보자가 Java를 마스터하기에 완벽한 방법입니다. 즉시 검증 기능이 포함된 1200개 이상의 과제와 Java 기초 이론의 필수 범위를 제공합니다. 학습 성공을 돕기 위해 퀴즈, 코딩 프로젝트, 효율적인 학습법 관련 콘텐츠, Java 개발자 경력 관련 자료 등 동기 부여 기능들을 구현했습니다.
팔로우하기
인터페이스 언어
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語
한국어
Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Programmers Are Made, Not Born" © 2026 CodeGym
MastercardVisa
"Programmers Are Made, Not Born" © 2026 CodeGym