본문 바로가기

전체 글84

NodeJS GC GC(Garbage Collection) 가비지 컬렉션은 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 것이다. 자바스크립트는 두 개의 가비지 콜렉션 방법을 사용한다. 1. Reference-counting 레퍼런스 카운팅은 파일, 소켓, 메모리 슬롯 등 할당된 각 리소스를 가리키는 참조의 수를 계산한다. 객체를 참조하는 변수는 처음에는 특정 메모리에 대해 하나 뿐이지만, 변수의 레퍼런스가 복사될 때마다 레퍼런스 카운트가 늘어난다. 객체를 참조하고 있던 변수의 값이 바뀌거나, 변수 스코프를 벗어나면 레퍼런스 카운트는 줄어든다. 레퍼런스 카운드가 0이 되면, 그 객체와 관련한 메모리는 비울 수 있다. 2. Tracing 한 객체에 flag를 두고, 가비지 컬렉션 사이클마다 flag 표시 후.. 2023. 9. 26.
Memory leak(메모리 릭, 메모리 누수) Memory leak 이란? 메모리 누수(Memory leak)란 더 이상 사용하지 않는 객체들이 힙(Heap) 영역에 남아 있어 불필요하게 메모리를 차지하고 있는 상황을 의미한다. 사용하지 않는 객체들이 계속 메모리에 남아 있으면 성능 저하를 야기하고, 종국에는 Out of Memory Error를 발생시킬 수 있으므로 주의가 필요한다. [참고] https://www.nextree.io/memory-leak/ 메모리 누수의 개념과 방지 방법 들어가며 이번 글에서는 메모리 누수의 개념과 메모리 누수를 방지할 수 있는 방법에 대해 살펴봅니다. 메모리 관리에 관심을 가지게 된 것은 최근 업무 도중 경험한 오류 때문이었습니다. 현 www.nextree.io https://velog.io/@shin6403/%E.. 2023. 9. 25.
setTimeout()과 setInterval() setTimeout() 자바스크립트에서 코드를 바로 실행하지 않고 일정 시간 기다린 후 실행해야하는 경우에 사용된다. setTimeout() 함수는 첫번째 인자로 실행할 코드를 담고 있는 함수를 받고, 두 번째 인자로는 지연시간을 밀리초(ms) 단위로 받는다. ex) setTimeout(() => console.log("5초 후에 실행됨"), 5000); setTimeout() 함수는 세 번째 인자부터는 가변 인자를 받는다. 첫 번째 인자로 넘어온 함수가 인자를 받는 경우, 이 함수에 넘길 인자를 명시해주기 위해 사용한다. 예를 들어, 두 개의 수를 인자로 받아 더한 값을 출력해주는 add() 라는 함수에 인자로 3과 4를 넘겨 2초를 기다린 후에 호출해보는 코드를 작성해보자. function add(x.. 2023. 9. 25.
JavaScript - 비동기 처리/콜백 함수 비동기 처리란? 자바스크립트의 비동기 처리란 특정 코드의 연산이 끝날 때까지 코드의 실행을 멈추지 않고 다음 코드를 먼저 실행하는 자바스크립의 특성을 의미한다. 비동기 처리 예시 비동기 처리의 가장 흔한 사례는 제이쿼리의 ajaz이다. 제이쿼리로 실제 웹 서비스를 개발할 때 ajax 통신을 빼놓을 수가 없다. 보통 화면에 표시할 이미지나 데이터를 서버에서 불러와 표시해야 하는데 이때 ajax 통신으로 해당 데이터를 서버로부터 가져올 수 있기 때문이다. function getData() { var tableData; //ajax 통신 $.get('https://domain.com/products/1', function(response){ tableData = response; }); return table.. 2023. 9. 19.
다익스트라 알고리즘 (Dijkstra Algorithm) 다익스트라 알고리즘이란? 다익스트라 알고르즘은 다이나믹 프로그래밍을 활용한 대표적인 최단 경로 탐색 알고리즘이다. 특정한 하나의 정점에서 다른 모든 정점으로 가는 최단 경로를 알려준다. 다만, 이 때 음의 간선을 포함할 수 없다. 다익스트라 알고리즘이 다이마닉 프로그래밍 문제인 이유는 '최단 거리는 여러 개의 최단 거리로 이루어져있기 때문이다.' 작은 문제가 큰 문제의 부분 집합에 속했다고 볼 수 있다. 기본적으로 다익스트라는 하나의 최단 거리를 구할 때 그 이전까지 구했던 최단 거리 정보를 그대로 사용한다는 특징이 있다. 1. 출발 노드를 설정한다. 2. 출발 노드를 기준으로 각 노드의 최소 비용을 저장한다. 3. 방문하지 않은 노드 중에서 가장 비용이 적은 노드를 선택한다. 4. 해당 노드를 거쳐서 .. 2023. 9. 10.
JS - Promise Promise 란? Promise는 자바스크립트에서 제공하는 비동기를 간편하게 처리할 수 있게 도와주는 객체이다. Promise 이전에 비동기 처리로 콜백 패턴을 사용했으나 콜백 지옥(Callback Hell) 으로 인해 가독성도 나쁘고, 비동기 처리 중에 발생한 에러의 처리가 까다로웠다. Promise는 이러한 단점을 보완하기 위해 나온 대안이라고 봐도 무방하다. Promise 객체 생성 const condition = true; // true이면 resolve, false이면 reject const promise = new Promise((resolve, reject) => { if(condition) { resolve('성공'); // then 실행 else { reject('실패'); // cat.. 2023. 8. 28.