찾다
웹 프론트엔드JS 튜토리얼Javascript 가비지 컬렉션 메커니즘 소개 및 이해_기본지식

Javascript를 자주 사용하는 사람들은 가비지 수집 메커니즘에 대해 생각할 것입니다. Javascript는 개발자가 C 및 C와 같이 가비지를 수동으로 지울 것을 요구하지 않습니다. Javascript 프로그램을 작성할 때 개발자는 메모리 사용량, 필요한 메모리 할당 및 쓸모없는 메모리(쓰레기)의 재활용은 자동으로 완전히 관리됩니다. 근본 원인은 프로그램이 더 이상 사용되지 않는 변수를 수집하고 해당 변수가 차지하는 메모리를 해제하기 때문입니다. 따라서 가비지 수집 메커니즘은 이 작업을 고정된 간격으로 주기적으로 반복적으로 수행합니다.


예를 들어 지역 변수는 함수 내부에만 존재합니다. 프로그램은 스택 메모리나 힙 메모리에 지역 변수에 해당하는 저장 공간을 할당합니다. 함수가 끝나면 지역 변수가 차지하는 메모리는 더 이상 존재하지 않습니다. 필요한 경우 프로그램은 다른 변수에서 사용할 수 있도록 지역 변수가 차지한 메모리를 해제합니다. 이는 프로그램이 메모리를 해제하는 가장 간단한 방법이지만 프로그램의 변수는 항상 사용됩니다. 이 때 가비지 수집 메커니즘은 변수를 추적하고 사용 여부와 메모리 공간을 확인해야 합니다. 출시될 수 있습니다.

가비지 수집 메커니즘은 주로 마크 앤 클리어 방법과 참조 카운팅 방법의 두 가지 방법으로 메모리 공간을 해제하기 위해 변수를 판단합니다.

표기법에 따르면 각 변수에는 고유한 실행 환경이 있습니다. 변수가 생성된 후에는 특정 환경에서 실행됩니다. 예를 들어 로컬 변수를 생성하면 해당 로컬 변수가 함수 본문에서 실행됩니다. 함수가 실행 중일 때 로컬 변수는 "환경에 진입 중"으로 표시되며, 함수 본문이 종료되면 변수가 실행 환경을 떠난다는 의미입니다. . "환경을 떠나는" 변수의 경우 가비지 수집 메커니즘은 이를 적절하게 기록하고 다음 수집 주기에 해제합니다.

각 값이 참조되는 횟수를 추적하는 참조 계산 방법입니다. 변수를 선언하고 참조 유형 값을 변수에 할당하면 해당 값의 참조 카운트는 1입니다. 동일한 값이 다른 변수에 할당되면 해당 값의 참조 카운트가 1 증가합니다. 반대로, 이 값에 대한 참조를 포함하는 변수가 다른 값을 취하는 경우 해당 값의 참조 카운트는 1씩 감소합니다. 이 값에 대한 참조 횟수가 0이면 더 이상 이 값에 접근할 수 없다는 뜻이므로 차지하는 메모리 공간을 재활용할 수 있다. 다음 주기에서 가비지 수집기가 실행되면 참조 횟수가 0인 값이 차지한 메모리 공간이 해제됩니다. (원문 설명 참고 : Javascript Advanced Programme - Second Edition)

예:

코드 복사 코드는 다음과 같습니다. Object( ; 1
    }


이 함수가 종료된 후 object1의 카운터 판독값은 1이고 object2의 카운터 차수는 1입니다. 따라서 두 변수 모두 파괴되지 않습니다. 함수 본문에 이러한 프로그램이 많이 존재하면 많은 양의 메모리가 낭비되고 재활용할 수 없어 메모리 누수가 발생합니다.

위 문제를 해결하려면 object1 object2가 차지하는 메모리를 수동으로 해제하십시오. 즉,



코드 복사


코드는 다음과 같습니다.
object1.method1 = null; 2 .method2 = null; 위의 예를 비교하고 일반적인 상황에서 예를 들어보세요.


코드 복사

코드는 다음과 같습니다.

function countMethod(){
var object1 = new Object(); // 변수 선언, 카운터가 0에서 1로 변경
var object2 = new Object(); 0에서 1까지
object1.method1 = "이것은 object1입니다."; // object1 카운터 -1, object1 읽기는 0으로 변경됩니다.
object2.method2 = "이것은 object2 카운터입니다." // object2 카운터입니다. object2 읽기는 0이 됩니다
}

위의 예에서 볼 수 있듯이 일반적인 상황에서는 함수가 종료되면 object1과 object2의 읽기가 0이 됩니다. 다음 가비지 수집에서는 주기마다 재활용되고 차지하는 메모리가 해제됩니다.
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
星露谷物语硬木怎么快速收集星露谷物语硬木怎么快速收集Mar 26, 2024 am 11:21 AM

星露谷物语中硬木是一种重要的合成材料,我们在游戏中能够有着很多用途,所以在日常的时候可以囤一下,硬木具体有什么途径能够获得呢,下面就为大家带来星露谷物语硬木获取途径,有需要的话可以参考一下。星露谷物语硬木获取途径1、每天前去秘密森林采掘树桩可以快速获得硬木。2、在秘密森林中采掘树桩和打怪有概率获得桃花心木种籽。3、将种子种在院子中会长出桃花心木。4、最后将桃花心木采掘后也可以快速获得大量硬木。

手机安装 CentOS 及手机安装 CentOS 7手机安装 CentOS 及手机安装 CentOS 7Feb 29, 2024 pm 02:43 PM

前言作为热衷于Linux的用户,我们经常遇到在手机上安装CentOS或CentOS7的需求。尽管手机并非最佳Linux运行平台,但有时我们需要在手机上进行一些Linux相关操作或开发工作。在这篇文章中,我们将详细讨论如何在手机上安装CentOS或CentOS7。手机安装CentOS要在手机上安装CentOS,我们首先需要一个支持虚拟化技术的手机,比如支持安卓系统的手机,然后我们可以使用Termux这样的终端模拟器应用来模拟Linux环境,在Termux中,我们可以使用包管理器来安装CentOS的

微软 Windows 11/10 端 Edge 浏览器新增“手机上传”功能,方便跨设备文件传输微软 Windows 11/10 端 Edge 浏览器新增“手机上传”功能,方便跨设备文件传输Feb 22, 2024 am 08:10 AM

微软在最新的稳定版本中为Windows11/10端的Edge浏览器增添了一个新功能,即“手机上传”。用户现在可以通过Edge浏览器直接从手机上传文件,而且该功能几乎适用于所有网站,没有文件格式的限制。这一功能的引入为用户提供了更加便捷的上传方式,使得在使用Edge浏览器时可以更加高效地管理和分享文件。如何使用“手机上传”功能:打开Edge浏览器,点击任何网站的“上传”选项,然后在文件选择器中选择“从移动设备上传”。使用手机相机扫描二维码。在Edge浏览器点击“确认”配对设备。点击“上传文件”选项

深入探讨Golang变量的存储位置和机制深入探讨Golang变量的存储位置和机制Feb 28, 2024 pm 09:45 PM

标题:深入探讨Golang变量的存储位置和机制随着Go语言(Golang)在云计算、大数据和人工智能领域的应用逐渐增多,深入了解Golang变量的存储位置和机制变得尤为重要。在本文中,我们将详细探讨Golang中变量的内存分配、存储位置以及相关的机制。通过具体代码示例,帮助读者更好地理解Golang变量在内存中是如何存储和管理的。1.Golang变量的内存

深入了解CSS布局重新计算和渲染的机制深入了解CSS布局重新计算和渲染的机制Jan 26, 2024 am 09:11 AM

CSS回流(reflow)和重绘(repaint)是网页性能优化中非常重要的概念。在开发网页时,了解这两个概念的工作原理,可以帮助我们提高网页的响应速度和用户体验。本文将深入探讨CSS回流和重绘的机制,并提供具体的代码示例。一、CSS回流(reflow)是什么?当DOM结构中的元素发生可视性、尺寸或位置改变时,浏览器需要重新计算并应用CSS样式,然后重新布局

win10清理系统垃圾的步骤教程win10清理系统垃圾的步骤教程Jul 13, 2023 pm 09:53 PM

一些用户在使用电脑的时候,出现了win10系统清理垃圾的情况,当遇到win10系统清理垃圾这种情况,我们应该如何解决呢?如今还有很多用户不知道如何处理win10系统清理垃圾的情况,那么接下来就来看看win10清理系统垃圾的步骤教程,大家一起来看看吧。1、在电脑桌面上,点击“此电脑”,管理。2、选择磁盘管理3、选择你要清理的磁盘,右击选择属性。4、点击页面下方的“磁盘清理”按钮5、在出现的界面中,选择要清理的文件,点击“确定”,点击“删除文件”即可。以上就是win10清理系统垃圾的步骤教程啦,希望

PHP中的自动加载机制PHP中的自动加载机制Jun 18, 2023 pm 01:11 PM

随着PHP语言越来越受欢迎,开发人员需要使用越来越多的类和函数。当项目规模扩大时,手动引入所有依赖项将变得不切实际。这时候就需要一种自动加载机制来简化代码开发和维护过程。自动加载机制是一种PHP语言的特性,可以在运行时自动载入所需的类和接口,并减少手动的类文件引入。这样,程序员可以专注于开发代码,减少因繁琐的手动类引入而产生的错误和时间浪费。在PHP中,一般

原神收集散逸的仙力怎么做原神收集散逸的仙力怎么做Feb 01, 2024 pm 04:51 PM

在原神中,玩家将面临许多挑战,每个挑战任务都带来不同的乐趣。然而,要顺利完成这些挑战并收集散逸的仙力,也是有一定难度的。下面将介绍如何完成这一任务。首先,玩家需要探索游戏世界中的各个角落,寻找散逸的仙力。这些仙力可能隐藏在山谷、洞穴或其他隐秘的地方。使用角色的技能和能力来帮助你发现它们。其次,与其他玩家合作是完成任务的好办法。组队探索可以增加找到仙力的机会,而且还可以快速完成任务。与朋友或其他玩家组队,共同探索世界,互相协助,收集更多的仙力。最后,要小心敌人和陷阱。在寻原神收集散逸的仙力完成方法

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경