최근에 이와 같은 인터뷰 질문을 접했습니다. 이 단락에 메모리 누수가 있습니까? 그렇다면 누군가 메모리 누수를 제거하는 이유와 방법을 지적해 주실 수 있습니까?
人生最曼妙的风景,竟是内心的淡定与从容!
Memory Leak 간단히 말하면, 할당된 메모리는 브라우저 프로세스가 종료될 때까지 사용하거나 재활용할 수 없습니다.
순환 참조 문제의 경우참조를 제거하고 test=null,因为js가비지 수집 메커니즘정기적으로 실행되어 해당 항목을 찾아냅니다. 더 이상 사용되지 않습니다# 🎜🎜#Variable, 그런 다음 해당 변수가 차지한 메모리 를 해제합니다.Garbage collection
test=null
js
원리는 아래 그림과 같습니다. 그림에서 테스트는 dom 요소를 참조하고 dom 요소에 이벤트 핸들러를 추가합니다. 그러나 이벤트 처리 기능은 외부 범위의 테스트를 참조합니다. 따라서 다음과 같습니다. 순환 참조가 됩니다.
메모리 누수는 실제로 사용자가 아닌 테스트에 의한 것입니다. 외부 테스트에 대한 참조를 지우면 이 순환 참조가 파괴될 수 있습니다.
사실, 이는 마크 스윕 알고리즘을 사용하기 때문에 최신 브라우저에서는 문제가 되지 않습니다. 오래된 브라우저에서 가비지 수집 알고리즘은 참조로 인해 메모리 누수만 발생시킵니다. 즉, 순환 참조는 객체를 생성합니다. 사용할 수 없으며 쓰레기로 재활용할 수 없습니다.
메모리 누수란 무엇인가요?
이렇게 하면 실행 오류가 발생합니다. . . . . .
물론 CVTE 면접 질문에는 포함되어 있습니다. user.name에 대한 참조는 클릭 이벤트에 유지되므로 여전히 유출됩니다. 문제를 해결하는 방법은 위에서 언급한 대로 직접 역참조하는 방법밖에 생각이 나지 않습니다
Memory Leak 간단히 말하면, 할당된 메모리는 브라우저 프로세스가 종료될 때까지 사용하거나 재활용할 수 없습니다.
순환 참조 문제의 경우참조를 제거하고
test=null
,因为js
가비지 수집 메커니즘정기적으로 실행되어 해당 항목을 찾아냅니다. 더 이상 사용되지 않습니다# 🎜🎜#Variable, 그런 다음 해당 변수가 차지한 메모리 를 해제합니다.Garbage collection원리는 아래 그림과 같습니다. 그림에서 테스트는 dom 요소를 참조하고 dom 요소에 이벤트 핸들러를 추가합니다. 그러나 이벤트 처리 기능은 외부 범위의 테스트를 참조합니다. 따라서 다음과 같습니다. 순환 참조가 됩니다.
메모리 누수는 실제로 사용자가 아닌 테스트에 의한 것입니다. 외부 테스트에 대한 참조를 지우면 이 순환 참조가 파괴될 수 있습니다.
사실, 이는 마크 스윕 알고리즘을 사용하기 때문에 최신 브라우저에서는 문제가 되지 않습니다. 오래된 브라우저에서 가비지 수집 알고리즘은 참조로 인해 메모리 누수만 발생시킵니다. 즉, 순환 참조는 객체를 생성합니다. 사용할 수 없으며 쓰레기로 재활용할 수 없습니다.
메모리 누수란 무엇인가요?
이렇게 하면 실행 오류가 발생합니다. . . . . .
물론 CVTE 면접 질문에는 포함되어 있습니다. user.name에 대한 참조는 클릭 이벤트에 유지되므로 여전히 유출됩니다.
문제를 해결하는 방법은 위에서 언급한 대로 직접 역참조하는 방법밖에 생각이 나지 않습니다