рекурсивный просмотр ссылок на объекты в eclipse java - PullRequest
0 голосов
/ 01 августа 2020
• 1000 view, выберите All References... в контекстном меню и убедитесь, что на него ссылаются несколько объектов. Однако я не могу проверить эти объекты и не вижу их собственных ссылок:

введите описание изображения здесь

import java.lang.ref.WeakReference;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.aop.Advisor;
import org.springframework.aop.framework.ProxyFactory;

public class TestGC {

    public static void main(String[] args) throws Exception {
        doStuff();
        gc();
        if (proxyRef.get() != null) throw new Exception("unexpected");
        if (factoryRef.get() != null) throw new Exception("unexpected");
        Advisor advisor = Objects.requireNonNull(advisorRef.get());
        advisor.getClass(); // breakpoint here
    }

    static WeakReference<Advisor> advisorRef;
    static WeakReference<ProxyFactory> factoryRef;
    static WeakReference<Object> proxyRef;

    static void doStuff() {
        A obj = new A();
        ProxyFactory factory = new ProxyFactory(obj);
        factory.addAdvice(new CoalescingInterceptor());
        advisorRef = new WeakReference<>( factory.getAdvisors()[0]);
        factoryRef = new WeakReference<>( factory );
        proxyRef =  new WeakReference<>( factory.getProxy() );
    }
    
    static class A {
    }
    
    static class CoalescingInterceptor implements MethodInterceptor {
        public Object invoke(MethodInvocation invocation) throws Throwable {
            return invocation.proceed();
        }
    }
    
    private static void gc() {
        for (int i = 0; i < 100; i++) {
            (new byte[1000000]).getClass();
            System.gc();
        }
    }
}

Я хочу увидеть, каким объектам принадлежат LinkedList и массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...