Копирование содержимого (объектов) в новую кучу в JVM - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь скопировать весь объект в старой куче в новую кучу, как показано ниже.

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

Как скопировать все содержимое структуры, включая содержимое объединения? .

...