¿Hay alguna forma de FORZAR los objetos de referencia débiles y / o blandos para que sean GC'd en Java?

Aquí está mi caso de uso. Estamos tratando de reducir una posible pérdida de memoria en una aplicación, y estamos utilizando una herramienta de análisis de memoria para capturar el montón para poder buscar instancias de objetos y referencias. (En caso de que ayude, estamos usando YourKit).

Esta aplicación hace un uso extensivo de proxys dinámicos y CGLIB, que terminan almacenando toneladas de referencias a clases y cargadores de clases en WeakHashMaps.

Después de que se ejecute nuestro caso de prueba, esperamos que todas las referencias duras al objeto X y su cargador de clases desaparezcan, pero dado que al final hubo muchos proxies involucrados en el caso de prueba, nos quedan muchas referencias débiles / suaves. (Solo puedo encontrar referencias de WeakHashMap, pero YourKit ajusta las referencias débiles y suaves en una línea de pedido en el resumen, por lo que no puedo estar seguro de que no me falte una referencia suave en alguna parte).

Esto es cierto incluso después de solicitar un GC completo de la JVM. (Usando sun 1.6.0_23 JDK en modo servidor.)

Eso parece como si la JVM admitiera que solo hay referencias débiles / suaves a estos objetos, pero no puedo obligarlo a GC a que estas cosas estén 100% seguras. (Entonces, lo que quiero es que esto desaparezca por completo del montón y que su uso de permgen de cargador de clases también desaparezca).

¿Alguien sabe de una manera de configurar y / o forzar a la JVM a deshacerse de los objetos solo con referencias débiles / débiles?

Respuestas a la pregunta(1)

Su respuesta a la pregunta