반응형
java.lang.Object에서 'shadow $ _klass_'및 'shadow $ _monitor_'변수는 무엇입니까?
최신 Android 업데이트 (SDK 21)에서 두 개의 새로운 변수가 다음에 추가 된 것으로 보입니다 java.lang.Object
.
private transient Class<?> shadow$_klass_;
private transient int shadow$_monitor_;
다음 shadow$_monitor_
에서 간략하게 사용됩니다 hashCode()
.
public int hashCode() {
int lockWord = shadow$_monitor_;
final int lockWordMask = 0xC0000000; // Top 2 bits.
final int lockWordStateHash = 0x80000000; // Top 2 bits are value 2 (kStateHash).
if ((lockWord & lockWordMask) == lockWordStateHash) {
return lockWord & ~lockWordMask;
}
return System.identityHashCode(this);
}
그러나 그렇지 않으면 그것들에 대한 언급이 없습니다. ART의 GC와 관련이 있습니까? 아니면 일종의 토착 물건?
그들은 실제로 GC에 연결되어 있습니다. Brooks 포인터를 지원하기 위해 추가 된 것 같습니다. 여기 에서 Brooks 포인터에 대한 정보를 찾았 습니다 .
아이디어는 힙의 각 개체에 하나의 추가 참조 필드가 있다는 것입니다. 이 필드는 개체 자체를 가리 키거나 개체가 새 위치로 복사 되 자마자 새 위치를 가리 킵니다. 이를 통해 뮤 테이터 스레드와 동시에 객체를 비울 수 있습니다.
특히 다음 두 커밋을 참조하십시오.
libcore : a7c69f785f7d1b07b7da22cfb9150c584ee143f4
반응형
'your programing' 카테고리의 다른 글
new char은 실제로 클래스 유형에 대해 정렬 된 메모리를 보장합니까? (0) | 2020.12.31 |
---|---|
"auto"를 사용하는 선언이 구체적인 유형 지정자를 사용하는 extern 선언과 일치합니까? (0) | 2020.12.31 |
Rails 마이그레이션을 어떻게 테스트하나요? (0) | 2020.12.31 |
size_t가 서명되지 않은 이유는 무엇입니까? (0) | 2020.12.30 |
mysql에서 자동 증가가 생성 할 수있는 가장 큰 ID 번호는 무엇입니까? (0) | 2020.12.30 |