공부/자바24 JVM 메모리 구조 응용 프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. 그 중 3가지 주요 영역은 Method Area, Call Stack, Heap 영역이 있다. 1. 메서드 영역(Method Area)프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일(*.class)을 읽어서 분석하여 클래스에 대한 정보(클래스 테이터)를 이곳에 저장한다. 이 때, 그 클래스의 클래스 변수(cv)도 이 영역에 함께 생성된다. 2. 힙(Heap)인스턴스가 생성되는 공간. 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다. 즉, 인스턴스 변수(iv)들이 생성되는 공간이다. 3. 호출 스택(Cal.. 2024. 10. 17. 어노테이션(Annotation) 어노테이션이란?프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이다. 어노테이션은 주석(comment)처럼 프로그래밍 언어에 영향을 미치지 않으면서도 다른 프로그램에게 유용한 정보를 제공할 수 있는 장점이 있다. 표준 어노테이션자바에서 제공하는 표준 어노테이션으로 *가 붙은 것은 메타 어노테이션이다. @Override로 예시를 들자면,메서드 앞에만 붙일 수 있는 어노테이션이다.조상의 메서드를 오버라이딩하는 것이라는 걸 컴파일러에게 알려주는 역할을 한다.오버라이딩을 할 때, 어노테이션이 없다면 조상 메서드의 이름을 잘못 써도 컴파일러는 이것이 잘못된 것인지 모른다.게다가 실행 시에도 오류가 발생하지 않고 조상의 메서드가 호출되므로 어디서 잘못되었는지 알아내기 어렵다.@.. 2024. 7. 3. 열거형(Enum) 열거형이란?관련된 상수들을 같이 묶어 놓은 것으로 Java는 열거형이 갖는 값뿐만 아니라 타입까지 안전한 열거형을 제공한다. 실제 값이 같아도 타입이 다르면 조건식의 결과가 false가 된다. 이 때문에 타입에 안전하다고 하는 것이다.// enum 열거형이름 {상수명1, 상수명2, ... }enum Kind {CLOVER, HEART, DIAMOND, SPACE} // 열거형 Kind 정의 → 열거형 상수 하나하나가 Kind 객체이다. 위의 열거형을 클래스로 정의한다면 아래와 같다.class Kind { static final Kind CLOVER = new Kind("CLOVER"); static final Kind HEART = new Kind("HEART"); stati.. 2024. 7. 3. 제네릭스(Generics) 제네릭스란?제네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크(compile-time type check)를 해주는 기능이다. 타입 안정성을 높인다는 것은 의도하지 않은 타임의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입고 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여준다는 뜻이다.class Box{ T item; void setITem(T item){ this.item = item; } T getItem() { return item; }} 제네릭스의 장점1. 타입 안정성을 제공한다.2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다. 제네릭스의 제한모든 객체에 대해 동일하게 동작해야하는 static.. 2024. 6. 12. 컬렉션 프레임워크(Collections Framework) 컬렉션 프레임워크란? 컬렉션은 다수의 데이터, 데이터 그룹을 의미하고, 프레임워크는 표준화된 프로그래밍 방식을 뜻한다. 컬렉션 프레임워크는 데이터 그룹을 저장하는 클래스들을 표준화한 설계를 의미한다. 쉽게 말하자면 자료 구조(Data Structure) 종류의 형태들을 자바 클래스로 구현한 모음집이라고 생각하면 된다. 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이 Java Collection Frameword(JCF)이다. 직접 자료 구조 클래스를 만들어 사용할 수도 있지만, 알고리즘의 속도와 안정성에 있어 자바 언어 개발진들이 수십년에 걸쳐 JVM(자바 가상 머신)에 최적화시켜 개량해왔기 때문에 Collection Framework를 가져와 사용.. 2024. 6. 10. 예외 처리(Exception handling) 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종ㄹ료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 오류의 종류컴파일 에러 : 컴파일 시에 발생하는 에러런타임 에러 : 실행 시에 발생하는 에러논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것▶ 에러 : 메모리 부족이나 스택오버플로우와 같이 일단 발생하면 복구할 수 없는 심각한 오류 ▶ 예외 : 발생하더라도 수습될 수 있는 비교적 덜 심각한 것 예외 클래스의 계층 구조 Exception 클래스들 : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외RuntimeException 클래스들 : 프로그래머의 실수로 발생하는 예외 예외 처리하기예외처리란?프로그램 실행 시 발생할 수 있는 예.. 2024. 6. 4. 내부 클래스(inner class) 내부클래스란?내부 클레스는 클래스 내에 선언된 클래스이다. 클래스에 다른 클래스를 선언하는 이유는 다음과 같다.- 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 이싿.- 코드의 복잡성을 줄 일 수 있다.(캡슐화) 코드 예)class A { // ...}class B { // ...}// 위의 코드를 내부 클래스로 변환class A { // ... class B { // ... }}여기서 B는 A의 내부 클래스(inner class)가 되고 A는 B를 감싸고 있는 외부 클래스(outer class)가 된다. 이 때 내부 클래스인 B는 외부 클래스인 A를 제외하고는 다른 클래스에서 잘 사용되지 않는 것이어야 한다. 내부 클래스의 종류와 특징내부 클래스특징인스.. 2024. 6. 1. 인터페이스(interface) 인터페이스란? 인터페이스는 추상메서드의 집합이다. 인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가빌 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다. 인터페이스 작성interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수목록);} 인터페이스의 멤버들의 제약사항- 모든 멤버변수는 public static final 이어야 하며, 이를 생략할 수 있다.- 모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있다. 단, sta.. 2024. 5. 31. 이전 1 2 3 다음