Java/Basics
-
Java Heap DumpJava/Basics 2020. 6. 15. 22:18
■Memory Leak 프로그램이 OOM(Out Of Memory) 오류로 종료되거나 실행 속도가 저하되는 현상. 자주 발생하는 OOM 2가지 1. java.lang.OutOfMemorryError: heap space 2. java.lang.OutOfMemorryError: GC Overhead limit exceed 출처에 따르면, 자바 프로세스가 약 98%의 시간을 가비지 컬렉터를 실행하는데 소모하고 실행 이후에도 2% 이상의 힙 공간을 다섯 번 이상 확보하지 못할 때 이 예외가 발생한다. ■OOM에 대처하는 방법 프로그램이 OOM으로 인해 종료될 때 자동으로 당시의 메모리 정보를 파일(Heap Dump)로 남겨야 한다. -XX:+HeapDumpOnOutOfMemoryError 위 명령어를 프로그램..
-
JVM, JRE, JDKJava/Basics 2020. 6. 14. 23:29
■JVM이란? - Java Virtual Machine의 줄임말 - Java Byte Code(.class)를 각 OS에 맞게 해석하고, 해석된 코드의 실행 환경 구성 및 실행을 담당하는 가상 머신 (OS별 JVM 설치 필요) (아래에서 좀 더 자세히 살펴보자) ■JRE란? - Java Runtime Environment의 줄임말 - JVM과 자바 실행에 필요한 기본적인 클래스 라이브러리(Java Class Library)를 가지고 있다. - JRE를 다운로드받아 Java Byte Code(.class)를 실행시킬 수 있다. - Java파일을 컴파일할 수 없다.(Javac가 포함되어 있지 않음) - Oracle은 Java 11부터 JRE를 제공하지 않는다. Java 9 부터는 Jlink를 사용하여 커스텀..
-
Java Heap (with GC)Java/Basics 2020. 6. 8. 21:14
■Heap이란 - 인스턴스와 배열이 동적으로 생성되는 공간. - 생성에 필요한 인스턴스와 배열의 메타 정보는 Heap 내의 Method Area에서 얻어온다. - 모든 Thread가 공유하기 때문에 동기화 문제가 발생할 수 있다. - Garbage Collection의 대상이 되는 영역. - 개발자는 객체를 제거하기 위해 별도의 코드를 작성할 필요가 없고 오히려 부작용만 낳을 가능성이 큼. GC에 맡기는 것이 좋다 ■Heap 구성Heap의 각 영역이 의미하는 것은 아래 GC의 프로세스를 이해하면 더 구체적으로 알 수 있다. Java 8 이전 Java 8 이전에는 Metaspace라고 지칭된 영역 대신에 PermGen(Permanat Generation Space) 라고 불리는 영역이 존재했었다. 이 영역..
-
자바 컨벤션 모음Java/Basics 2020. 5. 21. 09:22
■객체의 기본 유효성 체크 주요 타입 유효성 체크를 위한 유틸 사용 예시 Object? extends Object java.util.Objects Objects.isNull(object);Objects.nonNull(object); StringStringBufferStringBuilderorg.apache.logging.log4j.util.StringsStrings.isEmpty(str);Strings.isNotEmpty(str); ■날짜 버전사용 클래스사용 예시 java 8 이전SimpleDateFormat && Calendar && DateSimpleDateFormat dateFormat = new SimpleDateFormat(format); Calendar calendar = Calendar.ge..
-
자바 예외(Throwable)Java/Basics 2020. 5. 20. 00:48
■Throwable - 1depth 자바의 예외 계층의 최상위 클래스는 Throwable이다. 어떤 메서드가 Throwable을 throws하면 클라이언트는 무조건 throws된 Throwable에 대해 try-catch로 책임(?)을 지거나 다시 throws해서 자신의 클라이언트에게 책임을 떠넘겨야 한다. 이런 에러 클래스를 검사 예외(checked exception)라고 지칭한다.public class Test { public static void throwsToClient() throws Throwable{ ExceptionClasses.throwsThrowable(); } public static void catchImmediately() { try { ExceptionClasses.throwsT..