1. 程式人生 > 其它 >每天一點基礎K8S--K8S中排程策略---節點選擇器nodeName、nodeSelector

每天一點基礎K8S--K8S中排程策略---節點選擇器nodeName、nodeSelector

JavaScript 是使用垃圾回收的語言,他會自動進行記憶體管理,每隔一段時間去判斷變數是否不再使用 然後釋放它佔用的記憶體。

垃圾回收有兩種標記策略- 標記清理引用計數,其中標記清理是最流行的策略

標記清理 - 先標記記憶體中儲存的所有變數,將在上下文中的變數或者被引用的變數的標記清除,之後垃圾回收會做一次記憶體清理將所有帶標記的銷燬,釋放其記憶體

引用計數 - 在變數被引用或者被賦值時將計數+1,在被覆蓋時-1,在回收時銷燬所有值為0的變數。 但是如果是通過各自屬性互相引用的情況下,他們的引用數永遠不會變成0,得不到釋放。

垃圾回收機制由於是瀏覽器週期性執行的,如果記憶體中分配了很多變數,則可能造成效能損失,尤其在移動端的瀏覽器裝置記憶體更小。優化記憶體佔用的最佳手段就是保證在執行時只儲存必要的資料,不用的資料設定為null,釋放其引用

優化手段:

1.用const let宣告變數,限制作用域,讓垃圾回收程式更早的介入

2.隱藏類和刪除操作

隱藏類的意思是 由同一個建構函式創建出的類的例項會共享隱藏類,但是如果對其中一個進行新增屬性的操作的話,二者不在共享隱藏類。例:

function Article() {
  this.title = 'xxx';
}
let a1 = new Article();
let a2 = new Article();

//a1 a2 共享隱藏類

a2.author = 'Jake';
//不再共享

最好的方案是避免這種動態新增,在建構函式中一次性宣告所有屬性 例:

function Article(opt_author) {
  
this.title = 'Inauguration Ceremony Features Kazoo Band'; this.author = opt_author; } let a1 = new Article(); let a2 = new Article('Jake');

3. 防止記憶體洩露

記憶體洩露多數是由於引用不合理導致的例如:意外宣告全域性變數,定時器回撥通過閉包引用了外部變數,閉包