hotspot源码分析-heap.cpp

1.先上源码

size_t CodeHeap::header_size() {
  return sizeof(HeapBlock);
}

这个函数的意义为获取heapBlock的大小,在hot spot虚拟机中,java堆底层为分块实现的。

    CodeHeap::CodeHeap() {
      _number_of_committed_segments = 0;
      _number_of_reserved_segments  = 0;
      _segment_size                 = 0;
      _log2_segment_size            = 0;
      _next_segment                 = 0;
      _freelist                     = NULL;
      _freelist_segments            = 0;

}

构造函数,主要包括以下这么几项
1._number_of_committed_segments 已经提交的段的数量
2._number_of_reserved_segments 保留段的数量
3._segment_size 段的大小
4._log2_segment_size log2段大小
5._next_segment下一个段
7.释放

    void CodeHeap::mark_segmap_as_free(size_t beg, size_t end) {
      assert(0   <= beg && beg <  _number_of_committed_segments, "interval begin out of bounds");
      assert(beg <  end && end <= _number_of_committed_segments, "interval end   out of bounds");
      // setup _segmap pointers for faster indexing
      address p = (address)_segmap.low() + beg;
      address q = (address)_segmap.low() + end;
      // initialize interval
      while (p < q) *p++ = 0xFF;
}

这个函数作用将一段内存地址标记为free
核心代码为 while (p < q) *p++ = 0xFF;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值