--- tags: jsdc2021 --- # #Session 4 Memory Leak 與你的距離 {%hackmd 2YoCBdBPTjmHXDr9lEpWuQ %} > 從這開始 > 可以直接打字做共筆囉 :point_down: Kuan@方格子  ## Memory Leak 是什麼 - Memory: 儲存各種東東的地方 - 結構 - stack - 我們要有 Release - heap - 新資料    使用 Grafana 觀察 ## Outline - Memory Leak 病徵病因 - Garbage Collection in V8 - DevTool ## Memory Leak 病徵病因 ### 複習 Stack and Heap  - Heap - Code Space: 編譯後的程式碼 (演示)  - notive 推入 global stack - character 是由 makeWizard 決定 - 呼叫 makeWizard 函式 - 將 name 推到 makeWizard 的 stack - 將 wizard 推到 makeWizard 的 stack - return 傳給呼叫他的人 - character(ptr) 進入 stack - 指向 heap 的 character 值 - 補充:因為 character 很大,而且可能會到處傳(複製開銷大,學 rust 可以幫助了解這些知識) - 若改呼叫 makeWizard ... - wizard 還會存活在 heap 裡面嗎? - wizard 會消失 - who did that? - GC -  ## Garbage Collection in V8 ### GC三階段  - Defragment - Windows 硬碟重組 - SSD 用 TRIM 不要 Defrag! ### Two collectors  https://v8.dev/blog/orinoco-parallel-scavenger - Young Generation - Nursery - 剛出現的新東西 - Intermediate - Old Generation - 比較不需要被清掉 <!-- 記憶體相關領域我不熟 我先聽,先不做共筆喔 --> <!-- OK --> ### Why should GC Generation be existed?   semi-space design from-space and to-space in young ### Major GC  Sweep 成本很高,一般V8不會頻繁進行整理,V8判定為 reachable 會保留 反之回收掉 <!-- 是 Defragment 成本高吧 --> ## Find Memory Leak in App 下述有 Memory Leak  使用 node --inspect 來 Debug 在 DevTools > Memory 使用 k6 進行壓力測試 做之前先進行 snapshot ## 文字版 https://vocus.cc/article/61176c17fd89780001942f1c
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up