# Posting

9개의 포스트
post-thumbnail

[JAVA] JVM - Garbage Collection

Garbage Collection Garbage Collection은 Java의 메모리 관리 기법으로, Heap영역에 동적으로 할당된 메모리들 중 사용되지 않는 인스턴스를 자동으로 식별하여 해제하는 작업이다. Garbage Collection의 장점 C/C++과는 달리 Java는 Garbage Collector가 메모리를 알아서 관리해주기 때문에 개발자가 동적으로 할당된 메모리 전체를 관리할 필요가 없다. 따라서 해제된 메모리에 접근하거나, 이미 해제된 메모리를 다시 해제하는 등의 버그나 불필요한 작업을 해소할 수 있고, Garbage Collector가 자동으로 사용되지 않는 인스턴스에 할당된 메모리를 해제하기 때문에 메모리의 누수를 막을 수 있다. Garbage Collection의 단점 하지만 Garbage Collection이 수행되는 정확한 시점을 알 수 없고, GC작업은 순수 오버헤드이기 때문에 성능저하의 원인이 될 수 있다. Garbage Coll

2023년 1월 2일
·
0개의 댓글
·
post-thumbnail

[JAVA] JVM - Execution Engine

Execution Engine Class Loader에 의해 Method Area에 로드된 class file은 클래스의 정보를 담은 Constant Pool과 클래스의 동작을 정의한 Byte Code를 포함하고 있다. 이때, Execution Engine은 Method Area에 로드되어있는 Byte Code를 명령어 단위로 읽어와 실행한다. JVM의 Execution Engine은 세 가지 부분으로 구성되어있다. Interpreter : Byte Code의 명령어를 한줄씩 읽어 기계어로 번역함 JIT Compiler : Interpreter를 보완하기 위해 중복되는 Byte Code들을 한꺼번에 번역함 Garbage Collector : 효율적인 메모리관리를 위해 사용하지 않는 메모리를 자동으로 정리함 Interpreter Byte Code를 한줄씩 읽어서 Native Code(기계어)로 번역하는 역할을 담당한다. 하지만 반복적으로 호출되

2023년 1월 2일
·
1개의 댓글
·
post-thumbnail

[JAVA] JVM - Runtime Data Area

Runtime Data Area > JVM이 운영체제로부터 할당받은 메모리영역. RDA Runtime Data Area는 총 다섯개의 영역으로 이루어져 있다. Method Area : 클래스에 대한 정보가 올라오는 영역. 모든 쓰레드가 공유 Heap : new 키워드를 통해 생성된 인스턴스가 생성되는 영역. 모든 쓰레드가 공유 Stack : 지역변수, 매개변수, 리턴값 등 임시적으로 사용되는 값들이 저장되는 영역 PC Register : 현재 쓰레드가 실행되는 부분의 주소와 명령을 저장하는 영역 Native Method Stack : Native 언어로 작성된 코드를 실행하기 위한 영역 ![concurrency](https://velog.velcd

2022년 12월 28일
·
0개의 댓글
·
post-thumbnail

[JAVA] JVM - Class Loader

Class Loader JVM의 Class Loader는 자바 컴파일러에 의해 컴파일된 파일(.class)을 JVM으로 로드하여 런타임 메모리영역에 올리는 역할을 한다. Class Loader 작동 과정 class loader 동작 JVM의 Class Loader는 로딩 -> 링크 -> 초기화 순으로 진행된다. 각 단계에서 하는 일은 다음과 같다. 로딩 : 클래스를 읽어오는 과정 링크 : 레퍼런스를 연결하는 과정 초기화 : static값을 초기화하고 변수를 할당하는 과정 Loading Loading은 Class Loader가 .class파일을 읽고 그 내용에 따라 적절한 Binary Data를 만든 뒤 Runtime Data Area의 Method Area에 저장하

2022년 12월 27일
·
0개의 댓글
·
post-thumbnail

[JAVA] JVM의 구조

JVM JVM(Java Virtual Machine)은 java로 작성된 소스코드를 플랫폼 독립적으로 실행하기 위한 가상머신으로, javac에 의해 번역된 .class파일을 불러와 실행시킨다. JVM Structure JVM은 총 다섯개의 컴포넌트로 이루어져있다. Class Loader : JVM으로 class를 로드하고 링크를 통해 메모리에 배치함 Runtime Data Area : 운영체제에게 JVM이 할당받은 메모리 영역 Execution Engine : Runtime Data Area에 있는 바이트코드를 실행함 Native Method Interface : JVM에서 Native(C/C++, 어셈블리 등)코드를 실행하기 위한 인터페이스 Native Method Libraries : Native Method 실행에 필요한 라이브러리 ![JVM Structure](https://velog.velcdn.

2022년 12월 27일
·
0개의 댓글
·
post-thumbnail

[JAVA] 자바의 동작원리

JAVA > Write Once, Run Anywhere JAVA 이전 C/C++은 플랫폼에 종속되어있기 때문에 윈도우에서 작성한 코드는 맥에서는 작동할수 없었고, 이를 해결하기 위해서는 Cross Compile이라는 방법을 통해서 다른 플랫폼에서 동작하는 코드를 작성해야 했다. 하지만 JAVA는 이 플랫폼 종속성을 해결하기 위해 JVM(Java Virtual Machine)을 도입하여 어떤 플랫폼에서도 JVM만 설치가 되어 있으면 자바 프로그램이 동작할 수 있도록 구현하였다. 프로그램 실행 구조 기본적으로 프로그램은 아래와 같은 구조로 운영체제 위에서 실행이 되기 때문에 하드웨어나 운영체제에 종속적일 수 밖에 없다. 하지만 JAVA는 운영체제와 프

2022년 12월 27일
·
0개의 댓글
·
post-thumbnail

Assignment #1 | Westagram [Mission 7] 게시물 등록 기능 구현

1.. Posting app 생성 주로 다루는 데이터의 종류가 달라지는 시점이기때문에 앱을 분리 postings app 생성 python manage.py startapp postings settings.py의 INSTALLED_APPS에 App 추가 2.. models.py Post 클래스에 작성자, 이미지, 내용, 생성시간, 업데이트 시간 추가 인스타그램에서는 게시글을 작성할 때 이미지는 필수이지만, 내용은 필수 X 따라서, 게시물 내용에 해당하는 content에 null=Ture 한명의 user는 여러개의 다양한 게시물을 등록 가능. 따라서, User와 Post는 one to many relationship!!! User 클래스와 FK로 연결 ` posting app의 post클래스가 users app의 User클래스를 참조하게 하기위해 Fore

2022년 5월 21일
·
0개의 댓글
·
post-thumbnail

벨로그, 반가워🖐

저는 여기에 이렇게 첫 로그를 작성하였습니다. 앞으로 잘 부탁드립니다

2022년 2월 14일
·
0개의 댓글
·
post-thumbnail

Django | WeStagram 7. 게시물 등록

게시물 등록 기능 준비 posting APP 생성 > Django에서는 주로 다루는 데이터의 종류가 달라지는 시점에서 앱을 분리합니다. 인스타그램의 게시물은 이용자 데이터와는 그 성질이 달라 데이터베이스에서 테이블을 따로 관리합니다. 따라서, 주로 다루는 테이블이 달라지므로 앱을 분리하는 것이 좋습니다. python manage.py startapp posting settings.py의 INSTALLED_APPS에 posting 앱 추가 posting MODEL 생성 인스타그램에 게시물을 등록하기 위해서는 작성자, 이미지, 내용이 필요하고 추가적으로 생성시간과 업데이트시간도 추가해주었다 content : 게시물 내용이고, 인스타그램 게시물등록에서

2021년 10월 3일
·
1개의 댓글
·