Posts

ls -ltR
# list all posts

total 6

실행 기록 남기기

2023-09-16

프로그램이 내부적으로 특정 명령을 실행하는 것을 기록해보자. 필자의 경우 git 명령을 확인하고 싶었다. 본인이 터미널에서 실행한 것을 확인하고 싶다면 단순히 history 명령을 통해 확인하면 된다. 프록시 실행 파일 만들기 먼저, 원하는 명령의 절대 경로를 확인하자 $ which git /opt/homebrew/bin/git 그 후 명령줄 인수로 오는 것을 그대로 포워딩하는 실행 파일을 만들자....

Weak Reference

2023-01-16

Garbage Collector가 존재하는 언어중 몇몇은 약한 참조(Weak Reference)라는 것을 제공합니다. java js python lua 일반적으로, 참조당하고 있는 객체는 Garbage Collection 대상이 아닙니다. 하지만 캐시와 같이 속도 면에서는 중요하지만 제거해도 괜찮은 객체는 어떻게 할까요? 이를 위해 Reference Object를 제공합니다. Reference Object를 통해 객체를 간접적으로만 참조하는 방식으로 사용하며, GC는 메모리가 부족하면 Reference...

Java GC Tuning

2023-01-16

이전 포스팅에서는 자바의 Garbage Collection에 대해 다뤘습니다. 이번 포스팅에서는 Garbage Collection을 수행하는 Garbage Collector를 애플리케이션에 맞게 튜닝하는 방법에 대해 알아봅시다. Garbage Collector와 Garbage Collection는 이니셜이 같아 둘 모두 GC라고 부릅니다. Garbage Collectors * 이 포스팅에서 다루는 java의 버전은 18입니다. Serial GC -XX:+UseSerialGC Parallel GC -XX:+UseSerialGC ~Concurrent Mark Sweep(CMS) GC~(Removed) Garbage-First(G1)...

Java GC

2023-01-16

이전 포스팅에서 Garbage Collection에 대한 전략 세가지를 다뤘습니다. 이번 포스팅에서는 추적 전략을 사용하는 java의 Garbage Collector에 대해 다룹니다. Java GC(Garbage Collector) * 이 포스팅에서 다루는 java의 버전은 18입니다. graph TD T[Thread] --a--> A(객체1) T[Thread] --b--> B(객체2) A(객체1) --> C(멤버) T[Thread] -.- D(Garbage) 이전 포스팅에서 모든 스레드에서 변수 혹은 그 변수의...

탈출 분석과 참조 카운팅, 추적

2023-01-16

우리는 프로그래밍을 하면서 다양한 한정적인 자원을 다룹니다. 네트워크 소켓이나, 메모리와 같이 사용한 후 돌려줘야할 것들이죠. 그 중에서, 메모리에 대한 이야기를 하려고 합니다. 다음 java 코드를 읽어봅시다. var a = new Integer(10); var b = a; System.out.println(a); a = null; // 아직 객체는 참조되는중 b = null; // 더 이상 해당...

이분탐색 실수없이 짜기

2023-01-16

[0, 1, 4, 8, 9]와 같은 정렬된 구조에서 특정 값의 위치를 찾는 문제를 풀어봅시다. array[i]와 같이 접근하는 연산 subscript 연산의 비용이 C라고 하고, 배열의 길이가 N이라고 합시다 나이브하게 보면, 앞부터 순서대로 찾으면 총 CN의 비용이 발생합니다. 이를 순차 탐색이라고도 표현합니다. 다음 아이디어를 더해봅시다. 우리가 만약 1을 본다면, 정렬되어있음을 알고 있기...