CodeBuffer与CodeBlob
CodeBuffer
从名字可以看出Buffer为缓存之意,即临时使用。在hotspot中将CodeBuffer作为临时保存生成的指令对象。
所有的指令被生成后先放在CodeBuffer中
当这些指令经过重定义和优化之后才会真正的放入永久的内存空间(CodeBlob)。
CodeBuffer与CodeSection之间的关系可以在下图中看出

我们可以把CodeBuffer想象成一个管理者,这个管理者管理着3个CodeSection对象分别是consts, insts和stubs,而这3个对象又管理着物理内存的3个区域。其中,我们在前面已经阐述过了insts区域用于保存指令。
CodeBlob
在CodeBuffer中存在一个blob字段,该字段用于描述当前的CodeBuffer属于哪一个BufferBlob对象。

