[JavaScript] 자바스크립트란?

김강욱·2024년 4월 30일

JavaScript

목록 보기
1/4
post-thumbnail

이번 글에서는 자바스크립트란 무엇인지에 대해 설명드리도록 하겠습니다.

자바 스크립트 정의

자바스크립트(JavaScript)는 웹 페이지에 생동감을 불어넣기 위해 만들어진 프로그래밍 언어입니다.

자바스크립트로 작성한 프로그램을 스크립트(script)라고 부릅니다. 스크립트는 웹페이지의 HTML 안에 작성할 수 있으며, 웹페이지를 불러올 때 스크립트가 자동으로 실행됩니다.

스크립트는 컴파일 없이 보통의 문자 형태로 작성할 수 있고, 실행도 할 수 있습니다. 이런 관점에서 자바(Java)와 매우 다른 언어입니다.

잠시 자바(Java)와 비교해보자면

1. 컴파일 방식 차이

자바는 컴파일 언어이기 때문에 자바 소스 코드를 직접적으로 실행할 수 없으며 먼저 바이트 코드로 컴파일되어야 하며, 이 바이트코드는 자바 가상 머신(JVM)에서 실행됩니다. 즉, 코드가 실행되기 전에 컴파일러를 사용하여 바이트 코드로 변환되어 목적 파일을 생성되어야 합니다.

반면, 자바스크립트는 인터프리터 언어이기 때문에 별도의 컴파일 과정 없이 실행되며, 웹 브라우저나 Node.js 같은 자바스크립트 엔진에서 직접 해석되어 실행됩니다.

2. 실행 환경의 차이

자바 애플리케이션은 JDK와 같은 별도의 개발 환경이 필요하지만 자바스크립트는 주로 웹 브라우저에서 실행되도록 설계되어있습니다. HTML 문서 내에 스크립트를 포함시켜 웹 페이지와 상호 작용하게 할 수 있으며 Node.js를 통해 서버 사이드 프로그래밍에서도 자바스크립트를 사용할 수 있습니다.


자바스크립트가 실행되는 자바스크립트 엔진의 기본 동작 원리는 이와 같습니다.

1. 엔진(브라우저라면 내장 엔진)이 스크립트를 읽습니다.(파싱)
2. 읽어 들인 스크립트를 기계어로 전환합니다.(컴파일)
3. 기계어로 전환된 코드가 실행됩니다. (실행 속도 빠름)

자바스크립트 메모리 관리

자바스크립트에서는 메모리 관리를 어떻게 하는지 알아봅시다. 자바스크립트 메모리 관리는 주로 자동으로 이루어지며, 개발자가 직접 메모리를 관리할 필요가 없습니다.

가비지 컬렉션(Garbage Collection)을 통해 메모리 관리를 수행하며, 이는 자바스크립트 엔진이 사용하지 않는 메모리를 자동으로 회수하여 메모리 누수를 방지하는 방식으로 동작하게 됩니다.


가비지 컬렉션 기본 원리

1. 할당
자바스크립트에서 변수를 선언하고 데이터(객체, 배열 등)를 할당할 때, 자바스크립트 엔진은 메모리에서 필요한 공간을 할당합니다.
2. 사용
할당된 메모리는 코드에서 참조되고 사용됩니다. 변수를 통해 이 데이터에 접근하고 수정할 수 있습니다.
3. 해제
데이터가 더이상 필요하지 않을 때, 예를 들어 변수가 범위를 벗어나거나, 더이상 사용되지 않을 때 해당 메모리는 가비지 컬렉터에 의해 회수됩니다.

가비지 컬렉션 방식

1. 마킹 및 스위핑 (Mark-and-Sweep)
이 방식은 객체가 활성화되어 있는지, 즉 어떤 방식으로든 접근 가능한지를 판단합니다. 접근 가능한 객체는 메모리에 유지되고, 접근할 수 없는 객체는 가비지 컬렉터에 의해 마크되고 스위핑됩니다, 즉 메모리에서 제거됩니다.
2. 참조 카운팅 (Reference Counting)
이 방식은 객체가 몇 개의 참조를 가지고 있는지 계산합니다. 객체에 대한 참조가 없으면 (참조 카운트가 0이면) 객체는 메모리에서 해제됩니다. 그러나 이 방식은 순환 참조가 있는 경우 문제가 될 수 있습니다. 순환 참조는 두 객체가 서로를 참조하는 상황을 말하며, 가비지 컬렉터가 이들을 제대로 회수하지 못할 수 있습니다.

참조 자료
코어 자바스크립트

profile
TO BE DEVELOPER

0개의 댓글