νμ¬μμ μμ μ νλ μ€, μλ‘κ³ μΉ¨ νλ©΄ κ°νμ μΌλ‘ Out of Memory λ©μΈμ§κ° λνλλ νμμ΄ λ°μνλ€.

νΌλΈλ¦¬μ± μμ μ€μΈλ° μ΄λ° λ©μΈμ§κ° κ³μ λ¨λκΉ μ΄μν΄μ μμΈκ³Ό ν΄κ²°λ²μ λν΄ μμ보μλ€.
μΌλ°μ μΌλ‘ λ©λͺ¨λ¦¬κ° λΆμ‘±ν λ λ°μνλ€.
1. 무ν 루ν λλ μ¬κ· νΈμΆ: μ΄λ λ©λͺ¨λ¦¬λ₯Ό λΉ λ₯΄κ² μλͺ¨νκΈ° λλ¬Έμ, μ 체μ μΈ μ½λλ₯Ό κ²ν νμ¬ λ¬΄ν 루ν λλ μ¬κ· νΈμΆμ΄ μλμ§ νμΈν΄μΌ νλ€.
2. λλμ λ°μ΄ν° μ²λ¦¬: λλμ λ°μ΄ν°λ₯Ό ν λ²μ μ²λ¦¬νλ €κ³ νλ©΄ λ©λͺ¨λ¦¬ λΆμ‘± μ€λ₯κ° λ°μν μ μλ€. λ°μ΄ν°λ₯Ό μμ λ¨μλ‘ λλμ΄ μ²λ¦¬νκ±°λ, νμνμ§ μμ λ°μ΄ν°λ₯Ό λ©λͺ¨λ¦¬μμ ν΄μ ν΄μΌ νλ€.
3. λ©λͺ¨λ¦¬ λμ: μ¬μ©νμ§ μλ λ©λͺ¨λ¦¬κ° ν΄μ λμ§ μμ μκ°μ΄ μ§λ¨μ λ°λΌ μ μ°¨ λ©λͺ¨λ¦¬κ° λΆμ‘±ν΄μ§λ νμμΌλ‘ λ©λͺ¨λ¦¬ κ΄λ¦¬ κ°μ νμνλ€.
4. λΈλΌμ°μ λλ νκ²½μ λ©λͺ¨λ¦¬ μ ν: μΌλΆ λΈλΌμ°μ λλ νκ²½μμλ λ©λͺ¨λ¦¬ μ¬μ©μ μ νμ λκ³ μμ μλ μλ€. μ ν리μΌμ΄μ μ λ©λͺ¨λ¦¬ μ¬μ©λμ μ€μ΄κ±°λ, μ νμ λ리λ λ°©λ² μ°ΎμμΌ νλ€.
1. μ΄λ²€νΈ 리μ€λ ν΄μ : μ»΄ν¬λνΈ νκ΄΄λ λ μ΄λ²€νΈ 리μ€λλ₯Ό ν΄μ μμΌμ€λ€.
beforeUnmonet λλ unmonted λΌμ΄νμ¬μ΄ν΄ ν
μμ removeEventListener νΈμΆμ ν΅ν΄ 리μ€λλ₯Ό ν΄μ νλ€.
2. νμ΄λ¨Έ ν΄μ : setTimeout λλ setIntervalμ μ¬μ©ν κ²½μ°, μ»΄ν¬λνΈ νκ΄΄λ λ νμ΄λ¨Έλ₯Ό ν΄μ ν΄μΌ ν¨. μ΄λ₯Ό μν΄ clearTimeout λλ clearIntervalμ νΈμΆν΄μΌ νλ€.
(vue.jsμμλ beforeUnmount λΌμ΄νμ¬μ΄ν΄ ν
μμ clearTimeoutμ νΈμΆνμ¬ νμ΄λ¨Έλ₯Ό ν΄μ )
νμ΄λ¨Έλ₯Ό ν΄μ νμ§ μμΌλ©΄ ν΄λΉ νμ΄λ¨Έλ κ³μ μ€νλμ΄ λ©λͺ¨λ¦¬λ₯Ό μ μ νκ² λ©λλ€. μ΄λ νμ΄μ§μ μ±λ₯μ μ νμν€κ³ , μ΅μ μ κ²½μ° "Out of memory" μ€λ₯λ₯Ό λ°μμν¬ μ μλ€.
π‘Tip
setTimeoutκ³Ό κ°μ νμ΄λ¨Έ ν¨μλ λΈλΌμ°μ μ μ΄λ²€νΈ 루νμ μν΄ κ΄λ¦¬λλ©°, νμ΄μ§λ₯Ό μ΄λνλλΌλ ν΄λΉ νμ΄λ¨Έκ° μ€μ λ νμ΄μ§μ 컨ν μ€νΈμμ κ³μ μ€νλ©λλ€. μ΄λ μλ°μ€ν¬λ¦½νΈκ° μ±κΈ μ€λ λλ‘ λμνλ©°, λΉλκΈ°μ μΌλ‘ μ΄λ²€νΈλ₯Ό μ²λ¦¬νλ νΉμ± λλ¬Έμ λλ€.
3. Reactive κ°μ²΄ μ°Έμ‘° ν΄μ : vue λ°μν μμ€ν μ λ©λͺ¨λ¦¬ λμλ₯Ό μΌμΌν¬ μ μμΌλ―λ‘, μ»΄ν¬λνΈ νκ΄΄ μ μ»΄ν¬λνΈλ₯Ό ν΄μ ν΄μΌ νλ€.
4. λ©λͺ¨λ¦¬ κ΄λ¦¬ λꡬ μ¬μ©: λΈλΌμ°μ κ°λ°μ λꡬλ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ λμ κ°μ§ λ° λλ²κΉ
κ°λ₯νλ€.
ν¬λ‘¬ > λ©λͺ¨λ¦¬ ν > Heap snapshotμ μΊ‘μ³νμ¬ λ©λͺ¨λ¦¬ μ¬μ©λμ λΆμν μ μλ€.

κ·Έλμ λ°λ‘ μ 체 κ²μμ ν΅ν΄ μ°μ μ μΌλ‘ μ΄λ²€νΈ 리μ€ν°κ° μΌλ§νΌ μ΄λ»κ² μ¬μ©λκ³ μλκ°λ₯Ό μ΄ν΄ 보μλ€. λͺλͺκ°μ μ΄λ²€νΈ 리μ€λλ₯Ό λ°κ²¬νκ³ μΆκ°μ μΌλ‘ Observerμμλ μ€λ¨ μ²λ¦¬λ₯Ό ν΄ μ€μΌνλ€λ λλ£μ νμ λ°μλ€.
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
// ...
observer.unobserve(entry.target);
}
});
});
// κ΄μ°°μ μμ
observer.observe(element);
// λμ€μ λͺ¨λ κ΄μ°°μ μ€λ¨
observer.disconnect();