JavaScript 무한 루프 및 힙 메모리 제한 - 치명적인 오류: 힙 제한 도달 할당 실패 - JavaScript 힙 메모리 부족
P粉773659687
P粉773659687 2024-03-27 20:21:43
0
1
468

루프를 무한정 실행해야 하는 일부 스크립트를 실행하려고 합니다(특정 조건이 충족될 때까지, 시간이 오래 걸릴 수 있음). 루프 내부의 작업은 매우 간단하며 새 변수가 생성되지 않고 요소가 배열로 푸시되거나 새 호출이 이루어집니다. 기본적으로 적어도 내 생각에는 각 루프마다 새로운 리소스가 사용되지 않습니다. 하지만 결국 다음과 같은 악명 높은 오류가 발생했습니다.

으아아아

나는 루프의 메모리 사용량을 연구해 왔으며 단순화를 위해 내 문제는 다음과 유사한 것으로 간주될 수 있습니다.

으아아아

"아무것도 하지 않음"에도 불구하고 각 루프마다 힙 사용량이 계속 증가한다는 것을 발견했습니다. 나는 똑같은 루프를 재귀 함수로 바꾸는을 시도했고 비슷한 결과를 얻었습니다. 또한 힙 메모리 크기 할당을 변경하는 방법도 잘 알고 있지만 무한정 실행해야 하기 때문에 이 상황에 대한 해결책은 아닙니다.

이런 루프를 실행하려면 어떤 코딩 공식을 사용해야 하나요? 힙을 늘리지 않고 이를 달성하려면 무엇을 변경해야 합니까? Garbage Collector에 대해 알고 있는데 이 기능이 제한을 일으키는 것이라고 추측할 수 있지만 그 이유를 실제로 이해할 수는 없습니다. 내가 하려는 일은 다른 많은 사람들이 접하게 될 매우 단순한 요구사항인 것 같은데, Java가 이를 비활성화했다는 사실이 믿기지 않습니다.

답변 감사드립니다

P粉773659687
P粉773659687

모든 응답(1)
P粉879517403

setInterval 또는 requestAnimationFrame을 사용하는 것이 좋습니다. JavaScript는 단일 스레드이므로 (비동기 함수 내에서도) 무한 루프가 발생하여 다른 코드가 실행되지 않을 수 있습니다.

이 문제가 해결되기를 바랍니다.

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿