Я пытаюсь скопировать весь объект в старой куче в новую кучу, как показано ниже.
HeapWord* mark = _space->bottom();
HeapWord* nmark = _nspace->bottom();
HeapWord* cond = _space->top();
while(mark < cond){
oop old_obj = oop(mark);
if(oop(mark)->getUsed() == 1){
memcpy(nmark,mark,oop(mark)->size());
oop new_obj = oop(nmark);
nmark += new_obj->size();
_nspace->set_top(nmark);
}
mark += oop(mark)->size();
}
И структура oop, как показано ниже.
typedef class oopDesc* oop;
class oopDesc {
int used;
volatile markOop _mark;
union _metadata {
Klass* _klass;
narrowKlass _compressed_klass;
} _metadata;
....
//Rest of the functions
....
}
Послекопирование, содержимое old_obj и new_obj, как показано ниже.
![enter image description here](https://i.stack.imgur.com/Oa9Vi.png)
Как скопировать все содержимое структуры, включая содержимое объединения? .