본문 바로가기

전체 글85

Garbage Collection 이 글은 Oracle의 Java Garbage Collection Basic, 그리고 JAVA SE 16의 HotSpot Virtual Machine Garbage Collection Tuning Guide 을 읽고 정리한 글입니다. Garbage Collection이란? Garbage Collection은 힙 메모리를 체크하여 사용되지 않는 객체를 확인하고, 삭제하는 프로세스입니다. C나 C++같은 언어가 수동으로 malloc이나 free로 메모리를 관리해주어야 하는 것에 달리 GC가 있는 언어는 각 언어의 Virtual Machine에서 관리해줍니다. 이러한 메모리 관리는 Reference Counting, Mark-and-Sweep 등등 많은 방법으로 이루어지지만, 오늘은 Oracle Hotspot.. 2021. 4. 4.
JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. 1. JVM JAVA와 OS사이에 중재자 역할을 해주면서 재사용성을 증가시킴 스택기반의 가상머신, 메모리관리 및 GC를 수행함 실행시 JVM은 OS에서 필요한 메모리를 할당받는다. javac(Java Compiler)가 .java파일을 .class파일(Byte Code)로 변화시킨다 Class Loader가 런타임 시점에 Class파일을 JVM으로 로딩한다 로딩된 Class파일은 Execution Engine을 통해 해석된다 해석된 코드는 Runtime Data Area로 이동하여 실행된다. 실행 간에 지속적으로 메모리 관리가 이루어진다. 2. JVM의 요소 Class Loader class 파일 / ByteCode를 메모리에 로드한다. 객체가 생성되는 과정이라고 볼 수 있다? 상속이 된다. load 요.. 2021. 3. 30.
Kotlin의 Generic - 기본문법 제네릭은 클래스 내부에서 사용할 자료형을 나중에 생성할 때 결정하도록 도와줍니다. 제네릭을 사용함으로서 자료형의 안정성이 높아지고, 형 변환의 번거로움이 줄어듭니다. 또한, 이후 컬랙션의 사용에도 큰 도움이 됩니다. 자바와 비슷하게 코틀린에서도 제네릭을 사용합니다. 사이에 매개변수를 넣는 방식으로 동일하게 사용합니다. 간단한 예시로 한번 살펴보겠습니다. class Box(arg:T){ var name = arg } fun main() { val box1:Box = Box(1) val box2:Box = Box("box") println("${box1.name} ${box2.name}") } /* Output 1 box */ 위와 같이 타입을 T로 지정해주고, 이후에 T에 원하는 자료형을 붙여서 사용할 수.. 2021. 3. 3.
Github Actions와 Issue로 간단하게 메일링 서비스 구현하기 - 'Dev-Event-Subscribe' 예전 이 글을 작성할 때 Actions를 이용해 뭔가 정말 간단하게 서비스를 만들 수 있지 않을까 생각했었다. 하지만 당장 괜찮은 아이디어가 생각나지 않아서 넘겨두었었다. 이번에 Dev-Event저장소에서 Actions와 Watch의 메일링 서비스를 이용해서 보다 편리한 서비스를 운영할 수 있으리라 생각이 들었다. 메인테이너 분께 이러한 아이디어에 대하여 건의를 드렸고, 2주간의 의견 공유를 통해 간단히 개발해서 운영을 시도해보는 중이다 :) 🥳매주 메일로 받아보는 Dev Event🥳 Dev-Event Dev-Event는 개발자 컨퍼런스 및 해커톤 등 행사들을 보기 좋게 저장해두는 저장소이다. 항상 이렇게 오픈소스 느낌으로 행사를 공유하는 저장소가 있으면 좋겠다 생각이 들었는데, 이렇게 저장소를 관리해주.. 2021. 2. 17.