Bazı alan değerlerini almak için kullanılan yansıması olan bir sınıfınız olduğunda çöp koleksiyonunun nasıl çalıştığını merak ediyorum. JVM, bu alanlara referans verilen değerlerin erişilebilir olduğunu ve bu nedenle resmi dil sözdiziminin bunlara erişmek için kullanılmadığı zamanlarda çöp toplama için uygun olmadığının farkındadır?Çöp toplama ve yansıma
(yansıma aşırı vurguladı burada olmasına rağmen) sorunu gösteren küçük bir pasajı:
/**
*
*/
import java.lang.reflect.Field;
public class B {
protected B previous = null, next = null;
/**
*
*/
public B(B from) {
this.previous = from;
}
public void transition(B to) {
this.next = to;
}
public B next() {
try {
Field f = getClass().getField("next");
f.setAccessible(true);
try {
return (B)f.get(this);
} finally {
f.setAccessible(false);
}
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
public B previous() {
try {
Field f = getClass().getField("previous");
f.setAccessible(true);
try {
return (B)f.get(this);
} finally {
f.setAccessible(false);
}
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
}
Şerefe,
Chris
İlginç bir soru. Bir çeşit gömülü Java uygulamasından ilham alındı mı? –
"Bazı alan değerlerini elde etmek için kullanılan yansımalı bir sınıf" ın ne anlama geldiğini netleştirmek için bir kod snippet'i ekleyebilir misiniz? –
Aslında, bir ağ altyapısı için bir test üzerinde çalışıyorum ve bazı alanlara yansıma ile erişiliyor. Yansımanın bellek kullanımı üzerinde nasıl bir etkisi olduğunu merak ederek, belki de JVM ile ilgili objeleri emin olamıyor. –