[Javascript] GC์ ๊ตฌ์กฐ (V8)
Javascript๋ ๋ชจ๋ ๊ฒ์ด ๋ฐํ์์ ์ํด ๊ด๋ฆฌ๋๋ ์คํฌ๋ฆฝํ
์ธ์ด๋ค.
๊ทธ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ํ ์ธ์ด ๋ฐ ๋ฐํ์์์ ์ด๋ฃจ์ด์ง๋ค.
์ฌ๊ธฐ์๋ Javscript, ๊ทธ ์ค์์๋ ๋ํ์ ์ธ ๊ตฌํ์ฒด์ธ V8์์ GC๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ตํ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
Javascript์ GC๋ ์ ๋ฐ์ ์ผ๋ก Java, C# ๋ฑ๊ณผ ๊ฐ์ ๋ฒ์ฉ ์ธ์ด๋ค์ ๋นํด ๋ฐ์ ์๋๊ฐ ๋๋๊ณ , ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ด ๋ฎ์ ํธ์ด๋ค.
์ ์ด์ ์ธ์ด์ ํ์ ๋ชฉ์ ๋ถํฐ๊ฐ ์๋ช
์ด ๊ต์ฅํ ๊ธธ๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ ์๋ ฅ์ด ์ฌํ ํ๊ฒฝ์์ ์คํํ๊ธฐ ์ํ ๋ชฉ์ ์ด ์๋์๊ธฐ ๋๋ฌธ์ ๋ ๊ทธ๋ ๋ค.
๊ทธ๋์ Node.js ๊ฐ์ ๊ฒ ์๋ฒ์คํ์ผ๋ก ๊ฝค ์ ํํ๊ณ ๋ ์์ง๋ง, ์ฌ๋ฌ๋ชจ๋ก ๋นํจ์จ์ ์ธ ๋ถ๋ถ์ด ๋ง์ด ์กด์ฌํ๋ค.
๊ตณ์ด ๋น๊ตํ์๋ฉด V8์ GC ๋ฐฉ์์ Go์ ๊ฐ์ฅ ๋น์ทํ ๊ฒ ๊ฐ๋ค.
์ฌ๊ธฐ์๋ Java, Go์ GC์๋ ๋น๊ต๋ฅผ ์ข
์ข
ํ ๊ฒ์ด๋ค.
https://m.blog.naver.com/sssang97/223575258532
https://m.blog.naver.com/sssang97/223576600679
์ธ๋ ๊ธฐ๋ฐ(Generational) GC
V8 ๋ํ GC ์ ๊ณ์ ์ ํต์ ์ธ ๋ฃฐ์ ๋ฐ๋ผ ์ธ๋ ๊ธฐ๋ฐ์ ๊ฐ์ฒด ๊ด๋ฆฌ ์์คํ ์ ๊ตฌํํ๋ค.
์ธ๋๋ณ GC๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝํ์์ ์ฐ๋ฌ๋ ๊ฐ์ค์ ํ ๋๋ก ํ๋ค.
- ๋๋ถ๋ถ์ ๊ฐ์ฒด๋ ๊ธ๋ฐฉ ์ฃฝ๋๋ค.
- GC์์ ์ด์๋จ์ ํ์๊ฐ ๋์ด๋ ์๋ก, ๊ทธ ๊ฐ์ฒด๋ ๋ ์ค๋ ์ด์์์ ํ๋ฅ ์ด ์ปค์ง๋ค.
์ด๋ฌํ ๊ฒฝํ์ ํ์ ์ด V8 GC ๋ํ ์ ์ธ๋์ ๊ตฌ์ธ๋๋ฅผ ๋ณ๋์ ๊ณต๊ฐ์ ์ ์ฅํ๋ฉฐ ๊ด๋ฆฌํ๋ค.
๊ณ์ํด์ ์ด์๋จ์ ํ๋ฅ ์ด ๋์ ๊ฐ์ฒด๋ง ๊ตฌ์ธ๋ ์์ญ์ ๋ชจ์๋๊ณ , ๋๋จธ์ง๋ฅผ ์ ์ธ๋์ ๋๊ณ ์ ์ง์คํ๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ํตํด ์๋ช
์ด ์งง์ ๊ฐ์ฒด๋ ๋นจ๋ฆฌ๋นจ๋ฆฌ ๋๋ฉด์ ์ ๋ฆฌํ๊ณ , ์๋ช
์ด ๊ธด ๊ฐ์ฒด๋ ๋๋ฆฟ๋๋ฆฟ ํ์ธํ๋ฉด์ ๊ด๋ฆฌ๋น์ฉ์ ์ค์ธ๋ค.
V8์ ๊ฐ์ฒด ์ ์ฅ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด ์ด๋ ๋ค.
์ ์ธ๋(New Space)๊ฐ ๋ฐ๋ก ์๋ก ํ ๋น๋ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋๋ ์์ญ์ด๋ค. ์ผ๋จ ๋ญ๊ฐ ๋ง๋ค์ด์ง๋ฉด ๋๋ถ๋ถ ์ ๊ธฐ๋ก ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ธ๋์์ ๋ง์ด๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด 2๋ฒ ๋ฐ์ํ ๋์ ์ด์๋จ์ ๊ฐ์ฒด๋ค์ ๊ตฌ์ธ๋(Old space)๋ก ์ด๋๋๋ค.
๋์ถฉ ์ ์ฒด์ ์ผ๋ก๋ ์ด๋ฐ ํ๋ฆ์ ๊ฐ๊ณ ์๋ค.
๊ฐ๊ฐ์ ์ฌ์ฉ๋๋ ์ธ๋ถ ์๊ณ ๋ฆฌ์ฆ์ ๊ณง ๋ค๋ฃจ๊ฒ ๋ค.
Mark and Sweep ์๊ณ ๋ฆฌ์ฆ
ํ๋ GC์ ๊ทผ๊ฐ์ด ๋ ๊ธฐ๋ฒ ์ค ํ๋๋ค.
1960๋ ์ ๋ฆฌ์ต์ ์ฐฝ์์ ๋งค์นด์๊ฐ ๋ง๋ค์๋ค.
Java์์๋ ๋ช๋ช GC ๊ธฐ๋ฒ์ ๋งํฌ์ค ์ค์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๊ณ , Go, C#, V8 ๋ฑ์ ์ง๊ธ๋ ์ด๊ฑธ ์ด๋ค
V8์์๋ ๊ตฌ์ธ๋ ๋ฉ๋ชจ๋ฆฌ GC(Major GC)์ Mark and Sweep์ ์ฌ์ฉํ๋ค.
๋ ์ ํํ ๋งํ๋ฉด ๋ณ์ข
์ธ Concurrent Mark and Sweep(CMS)๊ณผ Mark and Compact๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๊ธด ํ๋ค. ๊ทธ๊ฑด ๋ค์ ์น์
์์ ์ธ๊ธํ๊ฒ ๋ค.
https://m.blog.naver.com/sssang97/221567636644
๋งํฌ์ค์ค์์ ์ด๊ธฐ์ ๋์จ ๋ฐฉ๋ฒ๋ก ์ธ๋งํผ ๊ตฌ์กฐ๊ฐ ๋งค์ฐ ๋จ์ํ๋ค.
๋ฃจํธ๊ฐ์ฒด๋ค๋ถํฐ ํ๋ฐํด ๋บ ๋๋ฉด์ ์ฐธ์กฐ๋๊ณ ์๋์ง๋ฅผ ์ฒดํฌํ๊ณ , ์ฐธ์กฐ๋์ง ์์๊ฑธ ์น ์ง์๋ฒ๋ฆฐ๋ค๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด๋ค.
๊ตฌํํ๊ธฐ์๋ ํธ๋ฆฌํ์ง๋ง ๋จ์ ์ด ๋ง์์ Java ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ทผ๋์ ์ด ๊ตฌ์กฐ๋ฅผ ๊ฑฐ์ ๋ฒ๋ ธ๋ค.
๋งค GC ํ์๋ง๋ค ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํ์ค์บํ๋ฉด์ ์ฐ๊ณ , ๋ ํ์ค์บํ๋ฉด์ ์ง์์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ปค์ง๋ฉด ๊ฐ๋น์ด ์ ์๋๋ค.
๊ฒ๋ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ํํธํ๋ ์ฌํ๋ค. ๊ทธ๋ฅ ์ผ๋จ ์ง์ฐ๊ณ ๋ณด๋๊ฒ ์ต์ข
๋ชฉ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์กฐ๊ฐ๋ชจ์๊ฐ์๊ฑธ ๊ณ ๋ คํ์ง๋ ์์๋ค.
๋ฉ๋ชจ๋ฆฌ ํํธํ๊ฐ ๋์ ๋ ์๋ก ์ฐ์๋ ํฐ ๊ณต๊ฐ์ด ์์ด์ ธ์ ๋น ๊ณต๊ฐ์ ์ฐพ๊ธฐ๋ ํ๋ค๊ณ , ์ถ๊ฐ์ ์ธ ์ ๋ฆฌ์์
์ด ํ์ํด์ง ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
Mark and Compact
Mark and Compact๋ Mark and Sweep์์ ๋ฐ์ํ๋ ๋ฉ๋ชจ๋ฆฌ ํํธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์คํ ์ ํ๋ ์ถ๊ฐํ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
Edward Lueders๋ผ๋ ์ฌ๋์ด 1974๋ ์ ๊ณ ์ํ๋ค.
์ ๋ฐ์ ์ธ ๋์๋ฐฉ์์ ๋งํฌ์ค์ค์๊ณผ ๊ฑฐ์ ๋น์ทํ๋ค.
์ฐจ์ด์ ์ ๋งํฌ ํ์ ์ฐ๋ ๊ธฐ๋ฅผ ์ญ์ ํ ๋, ์ญ์ ๋ง ํ๋๊ฒ ์๋๋ผ ์์กดํ ๊ฐ์ฒด๋ค์ ํ์ชฝ์ผ๋ก ์์๊ฒ ๋ชจ์๋ค๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ํตํด์ ํํธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
๋ฐ๋ก ์ด๋์ด ์ด๋ฅธ๋ฐ Stop the World๋ฅผ ์ ๋ฐํ๋ ์ฃผ๋ฒ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ ์ด๋์ ํ์ฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ฐจ๋จํ ์ฑ๋ก ์ด๋ค์ ธ์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์์ ์๋ GC๋ก ์ธํ ์ ์ง์๊ฐ์ด ์ด ๋จ์๋ก ๊ฐ ์ ๋ ์๋๋ฐ, ์์ฆ์ ์ด๋ฐ์ ๋ฐ ์ต์ ํ๋ฅผ ๋ง์ด ํด์ 10ms ์ ๋์ ์ง์ฐ์ด ๋ณด์ฅ๋๋ค.
Mark and Copy ์๊ณ ๋ฆฌ์ฆ
๊ฐ์ฒด๊ฐ ๋ง์์ง์๋ก ๋๋ ค์ง๋ ๋งํฌ์ค์ค์์ ๊ฐ์ ํ๊ธฐ ์ํด ๋์จ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
1969๋ ์ ๋ก๋ฒํธ ํ๋์ฒผ์ด๋ ์ฌ๋์ด ๊ณ ์ํ๋ค.
V8์์๋ ์ ์ธ๋ ๋ฉ๋ชจ๋ฆฌ GC(Minor GC)์ Mark and Copy๋ฅผ ์ฌ์ฉํ๋ค.
์ด ๊ธฐ๋ฒ์์๋, ์ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ 2๊ฐ๋ก ์ชผ๊ฐ ๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋ฒ์ ํ ๋ธ๋ก๋ง ์ฌ์ฉํ๋ค.
๊ทธ๋ฌ๋ค ํ์ชฝ์ด ๊ฝ์ฐจ๋ฉด ์ด์๋จ์ ๊ฐ์ฒด๋ง ๋ค๋ฅธ ๋ธ๋ก์ผ๋ก ์ฎ๊ธฐ๊ณ ๊ธฐ์กด ๋ธ๋ก์ ์น ์ง์๋ฒ๋ฆฐ๋ค.
๋๋ถ๋ถ์ ๊ฐ์ฒด๊ฐ ์ด์๋จ๋๋ค๋ฉด ๋ค ์ฎ๊ฒจ์ผํ๋ ๋ณต์ฌ๋น์ฉ์ด ๊ฝค ๋ค์ง๋ง, ๋๋ค์๊ฐ ์ฃฝ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๋๋ผ์ธ ์ ๋๋ก ํจ์จ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ผ ์ ์๋ค.
๊ฒ๋ค๊ฐ ์ฎ๊ธฐ๋ ๊ณผ์ ์์ ์ ๋ธ๋ก์ ์ฐจ๊ณก์ฐจ๊ณก ์์๊ฒ ์์์ ํํธํ ๋ฌธ์ ๋ ์๋ค.
๋ฌผ๋ก ๋จ์ ๋ ๋ช ๋ฐฑํ๋ค.
-
๊ฐ์ฒด ์์กด๋ฅ ์ด ๋๋ค๋ฉด ๋นํจ์จ์ ์ด๋ค.
๊ทธ๋์ V8์์๋ ์์กด๋ฅ ์ด ๋ฎ์๊ฑฐ๋ผ ์์๋๋ ์ ์ธ๋ ์์ญ์๋ง ์ฌ์ฉํ๋ค. -
๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฐํ ๋ง๋ด์ ์ฐ๋๊ฑฐ๋ผ ๊ฐ์ฉ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ์ฌํ๋ค.
JVM์์๋ Eden-Survivor๋ผ๋ ๋ณ์น์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ต์ํํ๋๋ฐ, ์ฌ์ค V8์๋ ์ด๋ฐ ๊ณ ๋ฏผ์ ํ์ ์ด ์๋ค. ๊ทธ๋ฅ ๋ฐํ ๋ง๋ด์ ์ด๋ค.
Orinoco ํ๋ก์ ํธ
V8 GC๋ ๋งค์ฐ ๋ถ์์ ํ๊ณ ๋๋ฆฐ ์๊ธฐ๊ฐ ์์๋ค.
๊ทธ ์ค์์๋ mark์ sweep, compact ๊ณผ์ ๋์ Stop the world๋ฅผ ๋๋ฌด ์ค๋ซ๋์ ๋๋ฆด ์ ์๋ ๋ฌธ์ ๊ฐ ์์๋ค.
์ํฉ์ด ๋์๋ฉด ๋ฌด๋ ค ์ด๋จ์๋ก๊น์ง ์ง์ฐ๋๋ค.
์ด๊ฑธ ํด๊ฒฐํ๊ธฐ ์ํด V8๋ GC์ ๋ํ ์ต์ ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค. ์ด๊ฒ Orinoco๋ค.
orinoco์์ ์งํํ ์ต์ ํ ๊ด์ 3๊ฐ์ง๋ฅผ ๊ฐ๋จํ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
Increment ์ต์ ํ
GC๋ฅผ ํ๋ฒ์ ๋ค ์ฒ๋ฆฌํ๊ธฐ๋ณด๋จ, ๊ทธ๋ฅ ์ ๋นํ ์๋ผ์ ์ฒ์ฒํ ์น์ฐ๋ ํํ๋ก ๋ฐ์ ํ๋ค.
https://v8.dev/blog/trash-talk
์ด๊ฑด Go GC์ ๊ฑฐ์ ๋์ผํ ์ ๊ทผ๋ฒ์ด๋ค.
๋ฉ๋ชจ๋ฆฌ ์ ๋ฆฌ์ ๊ฑธ๋ฆฌ๋ ์ต์ข
์ ์ธ ์๋ฃ ์๊ฐ์ ๋ ๊ธธ์ด์ง ์ ์์ง๋ง, ๋น์ฅ ๋ฉ์ถ๋ ๊ฐ๊ฒฉ๋ค ์์ฒด๋ ์ค์ผ ์ ์์๋ค.
์ด๊ฒ์ผ๋ก V8 GC๋ ์ด์ง๊ฐํด์ 5-10ms ์ ๋์ ์ ์ง์๊ฐ์ ๋ณด์ฅํ ์ ์๋ค.
Incrementํจ์ ๋ณด์ฅํ๊ธฐ ์ํด์ V8๋ GoGC์ฒ๋ผ Tri-Color ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค.
https://v8.dev/blog/concurrent-marking
Parellel ์ฒ๋ฆฌ
๊ทธ๋ฆฌ๊ณ ๋น์ฐํ ์ค๋ ๋๋ ๋๋ฆด๋งํผ ๋๋ฆฐ๋ค.
๊ฐ์๊ฐ GC ์์
์ ์๋ก ๋ถํ ํด์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด๋ค.
JS๋ ์ธ์ด๊ฐ ์ฑ๊ธ์ค๋ ๋์ธ๊ฑฐ์ง, GC ์์ฒด์๋ ์ฝ์ด๋ฅผ ๊ฝค ํ์ฉํ๋ค.
Concurrency
๊ทธ๋ฆฌ๊ณ ์ค์ GC ์ค๋ ๋์ ๋ฉ์ธ ํ๋ก๊ทธ๋จ ์ค๋ ๋๊ฐ ์ด๋ ์ ๋๋ ๋์์ ์ผ๋ก ๋๋ค.
GC๊ฐ ๋๋ ๋์ ๋ฌด์กฐ๊ฑด ๋ฉ์ธ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ง๋ ์๋ ๊ฒ์ด๋ค.
๋ฌผ๋ก ์์ ํ ์ฐจ๋จ์๊ฐ์ด ์์ ์๋ ์๊ณ , ์ฐจ๋จ์ด ๋ฐ์ํ๋ ์คํ
์ด ์๊ณ ์ ๊น๋์ ์ฐจ๋จํ๋ ์คํ
์ด ์๊ณ ๊ทธ๋ฐ๊ฑฐ๋ค.
๊ทธ๋์ ์๋ฐํ ๋งํ๋ฉด ์ฌ์ค ์ ๊ทธ๋ฆผ์ ํ๋ ธ๋ค.
Idle time GC ์ค์ผ์ค๋ง (๋ธ๋ผ์ฐ์ )
Node.js๋ฅผ ์ ์ธํ๊ณ , ํฌ๋กฌ ๊ฐ์ ๋ธ๋ผ์ฐ์ ์ ํด๋น๋๋ ์ด์ผ๊ธฐ๋ค.
์น๊ฒ์์ด๋ ๋ฏธ๋์ด ์ฒ๋ฆฌ ๊ฐ์ ์ฒ๋ฆฌ์๋๊ฐ ๋งค์ฐ ์ค์ํ ์์คํ ์ ๋ง๋ ๋ค๋ฉด ๋ฐ๋ฆฌ์ด ์์ค์ ์ง์ฐ ์๊ฐ๋ ์น๋ช ์ ์ผ๋ก ๋ค๊ฐ์ฌ ์ ์๋ค.
๊ฒ๋ค๊ฐ ์์์ V8 GC์ ํ๊ท ์ ์ง์๊ฐ์ด 5-10ms ์ ๋๋ผ๊ณ ํ์ง๋ง, ์ต์ ์ ์ํฉ์๋ ์ ์ง์๊ฐ์ด 100ms ์์ค์ผ๋ก ์ง์ฐ๋ ์๋ ์๋ค.
๊ทผ๋ฐ ํฌ๋กฌ์ ๋ ๋๋ง ์ฃผ๊ธฐ๋ 60FPS(์ด๋น 60๋ฒ)์ด๋ค.
16.6ms ์ด๋ด์ ๋ ๋๋ง์ ์๋ฃํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
์ด ๋ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋, ๋ ๋๋ง ์๊ธฐ์ GC๊ฐ ๋์์ ๋ฆฌ์์๋ฅผ ์ ์ ํ๊ณ ๋ง๊ฐ ์๊ฐ์ธ 16.6ms ์ด๋ด์ ๋ ๋๋ง์ ์๋ฃํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ค.
์ด๋ฌ๋ฉด ํด๋น ํ๋ ์์ด ๊ฒฐ๊ตญ ์ญ์ ๋๊ณ , ์ฌ์ฉ์์๊ฒ ์ข์ง ์์ ๊ฒฝํ์ ์ค ์ ์๋ค.
์ด ํ์์ jank๋ผ๊ณ ๋ถ๋ฅธ๋ค.
V8์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ข ๋ณต์กํ ๋ฐฉ๋ฒ์ ์ถ๊ฐ๋ก ์ฌ์ฉํ๋ค.
ํฌ๋กฌ์ ์ค์ผ์ค๋ฌ๊น์ง ํ์ฉํด์ ํ๋ฉด์ ํ๋ ์์ ๊ทธ๋ฆฌ์ง ์๋ idle ํ์ ๋ด์ GC๋ฅผ ์ํํ๋๋ก ํ๋ ๊ฒ์ด๋ค.
https://queue.acm.org/detail.cfm?id=2977741
์ผ๋ฐ์ ์ผ๋ก ํ๋ ์ ๋ ๋๋ง ๊ฐ๊ฒฉ ๋ด์์ ์๋ฒฝํ๊ฒ ๋๋ผ ์ ์๋ค๋ฉด ๊ทธ๋ ๊ฒ ํ๊ณ , 16ms๊ฐ ๋๋๋ผ๋ ์ค์ง์ ์ธ ํ๋ฉด ์
๋ฐ์ดํธ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์๋ค๋ฉด GC๋ฅผ ์ข ๋ ์ค๋ ๋๋ฆฌ๊ธฐ๋ ํ๋ค.
๊ทธ๋๋ ์ฌ์ฉ์ ์
๋ ฅ์ ๋์ํ๊ธฐ ์ํด ๋ณดํต 50ms๋ฅผ ์ํ์ ์ผ๋ก ๋๋ ํธ์ด๋ค.
์ด๋ฅผ ํตํด์ V8์ jank ๋ฌธ์ ๋ฅผ ๊ฝค ํด์ํ๋ค.
์ด๋ฅผ ํตํด ์ผ๋ฐ์ ์ผ๋ก 70% ์ ๋์ GC๋ ํ๋ ์ ๋ ๋๋ง ์ฌ์ด์ Idle ํ์์ ์ฒ๋ฆฌ๋๋ค.
์ฐธ์กฐ
https://fe-developers.kakaoent.com/2022/220519-garbage-collection/
https://jayconrod.com/posts/55/a-tour-of-v8-garbage-collection
https://v8.dev/blog/trash-talk
https://queue.acm.org/detail.cfm?id=2977741