찾다

 >  Q&A  >  본문

JavaScript 무한 루프 및 힙 메모리 제한 - 치명적인 오류: 힙 제한 도달 할당 실패 - JavaScript 힙 메모리 부족

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

으아아아

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

으아아아

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

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

답변 감사드립니다

P粉773659687P粉773659687243일 전437

모든 응답(1)나는 대답할 것이다

  • P粉879517403

    P粉8795174032024-03-28 18:59:49

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

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

    으아악

    회신하다
    0
  • 취소회신하다