我对CodeCache::_heaps
初始化有些困惑。传递给新分配函数的内存类型参数为mtCode
,如here所示:
GrowableArray<CodeHeap*>* CodeCache::_heaps =
new(ResourceObj::C_HEAP, mtCode) GrowableArray<CodeHeap*> (CodeBlobType::All, true);
GrowableArray
构造函数使用mtInternal
作为内存类型默认参数here。
GrowableArray(int initial_size, bool C_heap = false, MEMFLAGS F = mtInternal)
: GenericGrowableArray(initial_size, 0, C_heap, F)
我感到困惑的是为什么我们使用C_HEAP
new
用mtCode
分配MEMFLAG,
的内存,但是GrowableArray
的构造函数默认为{{ 1}} mtInternal
。这样做有什么意义?