일하다가 알게된 상식정리 2

GC(Garbage Collector) 관련

현업에서 일하다 보니 OOM도 만나게 되고, 메모리 누수, 원인모를 에러 등.. 많은 부분을 겪어보게 되었다. 개인 프로그램에서는 신경도 쓰지 않았던 것들을 생각해야 했고, 원인을 해결하기 위해서 폭 넖은 생각과 다양한 지식이 필요했다. 그 중 중요하게 생각하는 것 중 하나는 GC이다. GC란? Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 JVM의 프로세스이다. 장점 : 개발자가 안쓰는 힙 영역 객체를 지우거나 하는 작업을 안해도되며, 힙영역의 메모리가 부족해지면 알아서 작동한다. 단점 : GC가 언제 작동하지 모르며, Major GC가 동작할 때는 모든 쓰레드가 멈추며, 이를 Stop-The-World 라고 부른다. 학교 다닐 때,..

OOM(Out Of Memory) 관련

초보 개발자(본인)가 입사 후 첫번째 프로젝트가 끝나고, 다른 프로젝트를 하러 갔다. 어느날, 이전 프로젝트의 사람을 만나서 이야기를 하는데 이전의 코딩방식의 문제점을 듣고 꼭 고쳐야겠다는 생각과 함께 이 글을 작성하게 되었다. 메모리 : 컴퓨터가 연산을 위해 참조하는 공간이다. 그림 참조 : https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/ 프로그램을 실행하게 되면, OS는 메모리에 실행할 프로그램의 소스코드를 올린다. 이를 코드 영역이라고 한다. 프로그램이 사용하는 전역변수, 정적변수는 데이터 영역 사용자의 동적 ..