본문 바로가기

java

[Java] Java 메모리 구조(Runtime Data Area) (작성중) 온라인 스터디 1주차 JVM이란? 문항에서 조금만 더 알아보자! 하는 생각으로 정리하는 Runtime Data Area!! GC랑 같이 내용 정리한다. 자바 메모리 구조(Runtime Data Area) 란? 1. 정의 - Runtime Data Area = JVM이 프로그램 수행을 위해 OS로부터 할당받은 메모리 영역 - 자바 소스 코드를 ---- 컴파일 ----> byte code 로 바꾸고, 이 바이트 코드를 JVM으로 실행하는 과정에서, 코드가 Runtime Data Area 영역에서 실행되는데, - 이때, OS가 JVM에 할당한 메모리 영역에 맞게 코드가 분배되고 실행된다. 2. 구분 - Runtime Data Area는 [스레드 별로 생성되는 메모리 영역] + [모든 스레드가 공유하는 메모리 .. 더보기
[Web] JPA와 Hibernate, Spring Data JPA JPA(Java Persistent API) 1. JPA(Java Persistent API) 정의 - JPA란, Java ORM 기술에 대한 API 표준 명세이다. - JPA는 특정 기능을 하는 라이브러리 X -> ORM을 사용하기 위한 인터페이스를 모아둔 것 -> 그렇다면, ORM은? - 아래 설명! - JPA는 자바 어플리케이션에서, '관계형 데이터베이스를 어떻게 사용해야 하는지를 정의' 하는 방법 중 하나로, - JPA는 단순한 명세이다. 즉, 구현이 없다. 2. JPA 등장 배경 (1) 기존 RDBS 방식 - 기존 스프링에서는 관계형 데이터베이스(RDBS)를 다룰 때, iBatis난 Mybatis와 같은 쿼리를 매핑하는 SQL Mapper 를 주로 사용했다. -> 하지만, 이러한 기술은 객체 모.. 더보기
[Java] 가비지 컬렉션(Garbage Collection) 여기저기서 나오는 메모리, 자바에서 말하는 가비지, GC 정리하자! 가비지 컬렉션(Garbage Collection) 정의 1. 가비지(Garbage) - 정리되지 않은 메모리, 유효하지 않은 메모리 주소 - 주소를 잃어버려 사용할 수 없는 메모리 - 앞으로 사용하지 않고, 메모리를 가지고 있는 객체도 포함 - 프로그래밍 언어에서Danling Object / Java에서 Garbage라고 부른다. public class Main { public static void main(String[] args) { int[] arr = new int[3]; arr[0] = 0; arr[1] = 1; arr[2] = 2; arr = new int[] {8, 9, 10}; } } 위의 부분에서, arr 이라는 배열이 .. 더보기
[Java] 변수 종류 - 클래스 변수 / 인스턴스 변수 / 지역 변수 한 번씩 헷갈리는 Java 변수 종류 정리 ! 구분 변수 종류 특징 멤버 변수 클래스 변수 1. static 을 붙여서 만듦 2. 객체 생성 없이도 사용 가능 [사용 이유] 1. 인스턴스에 따라 변하지 않는(불변의) 값이 필요할 경우 2. 인스턴스를 생성할 필요가 없는 값을 원하는 경우 3. 변수의 변경 사항을 모든 인스턴스가 공유해야 하는 경우 인스턴스 변수 객체를 생성해야만 사용 가능 지역변수 메서드 안에서만 선언 및 해당 메서드 안에서만 사용 가능 참고 - https://jishushu.tistory.com/11 더보기
[Online Study 1주차] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. [학습 주제] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. [학습 목표] 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기 [학습 내용] JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 JVM이란 무엇인가 1. JVM의 정의 - Java Virtual Machine으로, 자바를 실행하기 위한 가상 기계(컴퓨터) 2. Java의 특징 - OS에 종속적이지 않고 실행되기 위해서는 OS 위에서 Java를 실행 시킨 것이 JVM -> OS에 종속 받지 않고 CPU가 Java를 인식 및 실행할 수 있게 하는 가상 컴퓨터 컴파일 과정 - '컴파일(Compile)'이란, 개발자가 작.. 더보기
[Java] 접근 제어자(public, protected, default, private) public > protected > default > private 왼쪽부터 오른쪽으로 가면서 접근 범위가 좁혀진다. Public: 접근에 제한이 없음 Protected: 동일한 패키지 내에 존재하거나 상속된 클래스에서 접근 가능 default: 아무런 접근 제한자를 명시하지 않으면 default 값이 되며, 동일한 패키지 내에서만 접근이 가능 private: 자기 자신의 클래스 내에서만 접근 가능 이중 public과 private를 가장 많이 사용한다. 접근 제어자는 변수나 함수, 클래스에 대한 접근을 제한하여 객체가 가진 고유의 멤버 변수 값이 외부의 접근으로 인해 잘못 변경되는 것을 막을 수 있다.(캡슐화) 각 제어자의 접근 비교표를 보면, 제어자 같은 클래스 같은 패키지 같은 패키지 내의 상속 .. 더보기
[Java] static static: 정적이다. -> 클래스에 고정된 멤버로 클래스 멤버라 부름. 클래스에 고정된 멤버 -> 클래스 로더가 클래스를 로딩하면 메모리에 할당시켜 클래스 로딩이 끝나면 바로 사용 가능 전역적으로 쉽게 재사용하는 멤버나, 잘 변하지 않는 변수/메서드를 사용할 때 쓰임 -> 만들어놓고 클래스 호출이나 객체 생성을 따로 할 필요없이 바로바로 사용 가능 메모리 자원을 할당해놓고 사용 -> 너무 많이 사용하면 메모리를 많이 차지하게 되어 프로그램이 무거워짐. static 필드 사용 예시로, class Number { static int num1 = 0; // 클래스 필드 int num2 = 0; // 인스턴스 필드 } public class Main { public static void main(String.. 더보기