Java
-
-
자바 Garbage Collection에 대한 개념Java 2023. 10. 8. 14:08
Garbage Collection 자바 가상 머신의 heap영역에서 동적으로 할당했던 메모리 중에 필요 없게 된 메모리 객체를 모아 주기적으로 제거하는 프로세스 개발자는 메모리 관리, 메모리 누수 문제에 대해 관리하지 않아도 되어 오롯이 개발에만 집중할 수 있다. 한번 사용하고 버려지는 객체들을 주기적으로 비워주면서 한정된 메모리를 효율적으로 사용 예) 반복문 안에서 한번 선언되고 사용이 종료되는 객체들은 바로 비워준다. Stop-The-World 메모리가 언제 해제되는지 정확하게 알 수 없어 제어하기 힘들고 GC가 동작하는 동안에 다른 동작을 멈추기 때문에 오버헤드가 발생하는 단점이 있다. GC가 작동하는 동안 GC 관련 Thread를 제외한 모든 Thread는 멈추게 되어 서비스 이용에 차질이 생길 ..
-
자바 JVM의 런타임 데이터 영역 (Runtime Data Area) 자세한 구조Java 2023. 10. 8. 12:52
이전 및 관련 내용 2023.10.08 - [자바_JAVA] - 자바 JVM 자세히 알아보기 자바 JVM 자세히 알아보기 JVM에 관해 간단히 정리한 글 2023.02.07 - [자바_JAVA] - 자바 JVM, JRE, JDK 자바 JVM, JRE, JDK JDK (Java Development Kit) - JRE + 개발에 필요한 도구(javac, java 등등) JRE (Java Runtime Environment) - JVM이 자바를 동작시킬 developerkwak.tistory.com Runtime Data Area JVM의 메모리 영역으로 자바 애플리케이션을 실행할 때 사용되는 데이터들을 적재하는 영역 Method Area, Heap Area, Stack Area, PC Register, N..
-
자바 데이터 타입Java 2023. 8. 13. 15:24
데이터 타입 자바에서 데이터 타입은 크게 기본형 타입과 참조형 타입이 있다. 기본형 타입(Primitive type) 기본값이 있기 때문에 Null이 존재하지 않는다. 실제 값을 저장하는 공간으로 스택(Stack) 메모리에 저장된다. 컴파일 시점에 담을 수 있는 크기를 벗어나면 에러를 발생시키는 컴파일 에러가 발생한다. 논리형 타입 : boolean (기본값 : false / 할당 메모리 : 1byte) 정수형 타입 : byte (기본값 : 0 / 할당 메모리 : 1byte) 타입 : short (기본값 : 0 / 할당 메모리 : 2byte) 타입 : int (기본값 : 0 / 할당 메모리 : 4byte) 타입 : long (기본값 : 0L / 할당 메모리 : 8byte) 실수형 타입 : float (기..
-
자바 예외 종류 및 Exception 처리Java 2023. 8. 13. 15:00
Error와 Exception의 차이 Error 시스템에 비정상적인 상황이 생겼을 때 발생한다. 개발자가 미리 예측이 어렵다. Exception 개발자가 구현한 로직에서 발생한다. Exception이 발생할 상황을 예측해 처리할 수 있다. Exception 클래스의 구조 모든 예외 클래스는 Throwable 클래스를 상속받고 있다. RuntimeException은 CheckedException과 UnCheckedException을 구분하는 기준이다. RuntimeException을 제외한 모든 클래스는 CheckedException이다. CheckedException 반드시 예외 처리를 해야한다. 컴파일 단계에서 확인이 가능하다. 롤백을 하지 않는다. IOException, SQLException, Cl..
-
자바 생성자(Constructor) 정리Java 2023. 8. 11. 20:33
생성자(Constructor) 객체가 생성될 떄, 호출되는 메서드 (메서드는 호출되어야 동작하고 객체가 있어야 한다.) 반드시 class의 이름과 같아야한다. 객체를 생성하면 반드시 실행되며, 가장 먼저 실행된다. 생성자를 정의하지 않으면 컴파일러가 자동으로 기본 생성자를 만든다. 생성자를 새로 정의하면 기본 생성자는 만들어지지 않는다. * 주의 사항 (예시 참고) error: constructor SubConstructorTest in class SubConstructorTest cannot be applied to given types; SubConstructorTest() 를 선언하지 않고 사용하면 위와 같은 에러가 난다. 예시 class ConstructorTest { ConstructorTest..
-
Java 특정 값 배열에 포함 여부 (String, int)Java 2023. 8. 11. 20:24
Arrays.asList() java.util.Arrays를 사용 기본형 데이터 타입은 작동하지 않는 단점이 있다. 기본형 데이터 타입은 Ints.asList() 혹은 Java 8 Stream을 사용해 확인 import java.util.Arrays; public class Main { public static void main(String[] args) { String[] strArr = {"B", "A", "C", "D", "E"}; String strValue = "A"; System.out.println(Arrays.asList(strArr).contains(strValue)); // true } } Ints.asList() import com.google.common.primitives.Ints..