본문 바로가기

분류 전체보기256

[Java] 기본타입 vs 참조타입 기본 타입 vs. 참조 타입자바의 데이터 타입에는 크게 기본 타입과 참조 타입이 있다. 기본 타입 (primitive type)정수 타입, 실수 타입, 논리 타입정수, 실수, 문자, 논리 리터럴을 저장하는 타입이다.기본 타입은 변수에 실제 값(리터럴)을 저장한다.int age = 24; 참조 타입 (reference type)배열, 열거, 클래스, 인터페이스객체(Object)의 번지를 참조하는 타입이다.참조 타입은 변수에 객체의 번지(객체가 생성될 때 갖는 주소값)를 저장한다.변수는 번지를 통해 객체를 참조한다.String hobby = "공부"; 차이점모든 변수는 스택 영역에 저장된다.단, 타입에 따라 데이터가 생성되고, 저장되는 위치는 다르다.◾️ 기본 타입 변수: 스택 영역에 변수가 생성되고, 변수.. 2024. 6. 10.
[Java] 추상 클래스 vs 인터페이스 추상 클래스(Abstract Class)개념abstract 키워드로 선언된 클래스최소 한 개의 추상 메서드를 포함하는 경우 반드시 추상 클래스로 선언해야한다.그러나 추상 메서드가 하나도 없는 경우라도 추상 클래스로 선언할 수 있다. 추상 클래스의 구현서브 클래스에서 슈퍼클래스의 모든 추상 메서드를 오버라이딩하여 실행가능한 코드로 구현한다. 추상 클래스의 목적객체(인스턴스)를 생성하기 위함이 아니며, 상속을 위한 부모 클래스로 활용하기 위한 것이다.여러 클래스의 공통된 부분을 추상화(추상 메서드)하여 상속받는 클래스에게 구현을 강제화하기 위한 것이다. (메서드의 동작을 구현하는 자식 클래스로 책임을 위임)즉, 추상클래스의 추상메서드를 자식 클래스가 구체화하여 그 기능을 확장하는 데 목적이 있다.추상 클래스.. 2024. 6. 10.
[Java] 오버라이딩 vs 오버로딩 자바의 꽃이라 불리는 클래스(class) 문법의 정말 주요 개념, 오버라이딩(overriding)과 오버로딩(overloading)에 대해 살펴본다.이 둘의 공통점은 클래스의 인스턴스 멤버인 메소드를 재정의 또는 확장의 개념이다. 아주 간단히 차이점을 꼽자면 오버라이딩(overriding)은 부모 클래스의 상속을 받은 자식 클래스에서 확장하는 개념, 오버로딩(overloading)은 하나의 클래스 내부에서 확장하는 개념이다. 본격적으로 이 두가지 개념에 대해 파헤쳐보자.1. 오버라이딩(overriding)상속 받은 자식 클래스는 부모 클래스가 물려준 메소드를 곧이 곧대로 따라야만 하는가?자식 클래스에서 물려 받은 메소드를 조금 변형해서 사용하고 싶다면, 이 오버라이딩을 사용하여 자유롭게 기능을 추가 또는.. 2024. 6. 10.
[Java] JVM 이란? JVM이란 무엇인가Java Virtual Machine의 줄임말.직역하면 '자바를 실행하기 위한 가상 기계(컴퓨터)'라고 할 수 있다.Java 는 OS에 종속적이지 않다는 특징을 가지고 있다. OS에 종속받지 않고 실행되기 위해선 OS 위에서 Java 를 실행시킬 무언가가 필요하다. 그게 바로 JVM이다.즉, OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다. 컴파일 과정Java 소스코드, 즉 원시코드(*.java)는 CPU가 인식을 하지 못하므로 기계어로 컴파일을 해줘야한다.하지만 Java는 이 JVM 이라는 가상머신을 거쳐서 OS에 도달하기 때문에 OS가 인식할 수 있는 기계어로 바로 컴파일 되는게 아니라 JVM이 인식할 수 있는 Java bytecode(*.cl.. 2024. 6. 4.
[Android] 메모리 누수 & 분석 메모리 누수란모든 앱은 작업을 수행하기 위한 리소스로 메모리가 필요합니다. 각 앱에 충분한 메모리가 존재하도록 안드로이드 시스템은 메모리 할당을 효율적으로 관리해야 합니다. 이를 위해서 런타임시(실행시) 메모리가 부족하다면 안드로이드에서는 가비지 컬렉터(Garbage Collection = GC)를 트리거합니다. GC의 목적은 더 이상 유용하지 않은(사용되지 않는) 객체를 정리하여 메모리를 회수하는 것입니다. GC는 다음과 같은 3단계로 과정이 이루어 집니다.GC 루트에서 메모리의 모든 객체를 탐색하고 현재 참조가 되고 있는 객체는 활성화된 객체로 표시합니다.활성화가 표시 되지 않은 객체(참조되지 않는 객체)를 메모리에서 지웁니다.남은 객체들은 다시 정렬합니다.즉, 요약하자면 사용자에게 제공되는 모든 것.. 2024. 6. 3.
[Java] Garbage Collector (GC) Garbage Collection(GC) 이란?가비지 컬렉션(Garbage Collection, 이하 GC)은 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말한다. OOM (out of memory)JVM이 Heap 영역에 새로운 객체를 할당할 수 없을 때 발생하는 에러이다.GC에 의해 Heap 메모리가 청소되지 않으면 해당 메모리가 계속 쌓이고, 새로운 객체를 Heap 메모리에 할당하는 것이 불가능 해지는 상황  C / C++ 언어에서는 이러한 가비지 컬렉션이 없어 프로그래머가 수동으로 메모리 할당과 해제를 일일이 해줘야 했었다.반면 Java에서는 가비지 컬.. 2024. 6. 3.