write_master_dim->write_master_bin_ops ->write_master_bin_ops_loop->as_bin_particle_alloc_from_client: 該函數(shù)..."/>
溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Aerospike的bin內(nèi)存管理--即列內(nèi)存管理

發(fā)布時間:2020-08-10 16:16:12 來源:ITPUB博客 閱讀:370 作者:yzs87 欄目:關(guān)系型數(shù)據(jù)庫
Aerospike的bin內(nèi)存管理--即列內(nèi)存管理

1、內(nèi)存申請函數(shù)調(diào)用

write_master->write_master_dim->write_master_bin_ops
->write_master_bin_ops_loop->as_bin_particle_alloc_from_client:
該函數(shù)對as_bin_s->particle進(jìn)行申請內(nèi)存,并將相關(guān)bin屬性和值load到
申請的內(nèi)存中。

2、內(nèi)存釋放函數(shù)調(diào)用

as_record_done->as_record_destroy->as_record_clean_bins
->as_record_clean_bins_from


點擊(此處)折疊或打開

  1. void as_record_clean_bins_from(as_storage_rd *rd, uint16_t from)
  2. {
  3.     for (uint16_t i = from; i < rd->n_bins; i++) {
  4.         //對每個bin進(jìn)行釋放
  5.         as_bin *b = &rd->bins[i];
  6.         if (as_bin_inuse(b)) {//bin state有效
  7.             as_bin_particle_destroy(b, rd->ns->storage_data_in_memory);
  8.             as_bin_set_empty(b);//設(shè)置bin的狀態(tài)AS_BIN_STATE_UNUSED
  9.         }
  10.     }
  11. }
  12. void as_bin_particle_destroy(as_bin *b, bool free_particle)
  13. {
  14.     if (as_bin_is_embedded_particle(b)) {
  15.         b->particle = 0;//int、float類型沒有申請空間,這里set 0即可
  16.     }
  17.     else if (b->particle) {
  18.         if (free_particle) {
  19.             particle_vtable[as_bin_get_particle_type(b)]->destructor_fn(b->particle);
  20.         }
  21.         //根據(jù)類型調(diào)用destructor函數(shù),blob的調(diào)用blob_destruct,其實是cf_free(p)
  22.         //釋放了空間,將其set 0
  23.         b->particle = 0;
  24.     }
  25. }


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI