본문 바로가기
반응형

프로그래밍/JavaScript4

JavaScript의 Garbage Collection Garbage collection Garbage collection은 다음과 같은 형태로 발전해 왔습니다. Reference-counting garbage collection 단순한 알고리즘 방식으로 객체의 참조 횟수를 counting하여 0이 되면 메모리에서 release시키는 방식입니다. 하지만 해당 알고리즘은 순환참조(circular references)에 취약합니다. 서로가 서로를 참조해버리면 메모리에서 release가 안되며 이는 메모리 누수(Memory leak)이 발생되는 원인이 됩니다. Internet Explorer 6 and 7에는 이러한 알고리즘 방식이 사용되어 Memory leaks가 발행한다고 알려져있습니다. 최신 Garbage collection에는 해당 알고리즘을 사용하고 있지.. 2023. 2. 22.
V8 Engine의 integer, string이 메모리 어디에 할당 되는가? JavaScript는 debug하기가 어렵습니다. 때문에 node에서 컴파일러로 사용되는 V8 engine의 docs를 보거나, 여러 사람들이 작성한 Reference를 봐야합니다. 책 JavaScript Deep Dive에서 간략하게 JavaScript메모리에 대해 설명하고 있는데, 이를 좀 더 파보려고 합니다. 1. V8 Engine 메모리 구조 V8 Engine에는 기본적으로 Stack과 Heap메모리가 있으며, Literal을 저장하기위한 Constant pool이 있습니다. 2. Integer가 저장되는 방식. Integer는 기본적으로 V8 engine의 stack pointer에 저장됩니다. 저장되는 영역은 SMI(Small Integer)라는 곳에 저장되는데, 운영되는 OS에 따라 32Bi.. 2023. 1. 23.
V8 Engine에 대해서....(메모리구조, 컴파일방식) 1. V8 Engine이란?? Google에서 만든 JavaScript 컴파일러로 C++언어를 기반으로 만들어 졌습니다. 때문에 독립적으로 실행이 가능하며, 다른 웹 브라우저 없이 JavaScript, Node.js 코드를 컴파일 할 수 있습니다. 2. JIT Compiler (Just-In-Time) V8은 JIT Compiler을 지원합니다. 일반적인 Compiler에는 동적 컴파일(인터프리터)와 정적 컴파일(Compiler)가 있습니다. JIT Compiler는 이 두개를 합친 것으로 실행시점에서 인터프리터 방식으로 바이트 코드를 생성합니다. 그 후 V8 Engine은 바이트 코드를 기계어 코드로 만들고, 그 코드를 캐싱하여, 같은 함수가 여러 번 불릴 때 매번 기계어 코드를 생성하는 것을 방지합니.. 2021. 5. 31.
JavaScript 탄생 과 ECMAScript에 대해서 1. JavaScript 탄생 첫 탄생은 브랜든 아이크가 10일만에 설계한 것으로부터 시작합니다. 처음에는 Mocha라는 이름이었지만, 4달 만에 LiveScript라는 이름으로 개명하고 다시 3달 후에는 JavaScript라는 이름이 되어 오늘날까지 이어지고 있습니다. JavaScript라고 지은 이유는 Java의 유명세를 타서 묻어가려고 의도적으로 만들었다고 합니다. 해당 언어는 웹 브라우저 내에서 주로 사용되며, node.js를 통해 Backend도 만들 수 있게 되었습니다. 뿐만아니라 라즈베리파이에도 사용이 가능하며, 여러곳에서 사용될 수 있는 언어로 발전했습니다. 2. ECMAScript ECMA International 이라는 국제 표준화 기구가 있습니다. 표준화 시킨 대표적인 것들은 JSON.. 2021. 5. 31.
반응형

스킨편집 -> html 편집에서