V8的基本概念

  • V8裏面的變量是有GC進行控制的與C++不同,所以通過Handle類型來託管JS對象,以使GC來管理它們的生命週期。
  • V8裏面變量的生命週期也和C++中的不一樣,C++中是根據作用域比如{}來進行決定是否銷燬變量,而在V8裏面是通過HandleScope來聲明一個(非全局)作用域,在一個HandleScope對象後的所有Handle都是由它來管理生命週期,當HandleScope被析構的時候,其管理的Handle將被GC判斷是否需要回收。
  • 但是如果在局部創建的一些HandleScope會受C++作用域的影響在作用域結束的時候被析構,會導致裏面被託管的對象被GC回收,所以解決方法是HandleScope的Close()方法可以將當前的HandleScope關閉並且把方法參數傳遞給上一個HandleScope,也就是進入這個局部作用域之前的scope
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章