¿Por qué WeakHashMap tiene una fuerte referencia al valor después de GC?

Ejecutar esta modificación del código y forzar GC en Jconsole confirma la eliminación de la referencia.

    System.gc();

    try {
        while (refValue.get() != null) {
            System.out.println("map.keys = " + map.keySet());
            Thread.sleep(5000);
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    System.out.println("map.keys = " + map.keySet());
    System.out.println("map.values = " + map.values());
    System.out.println("map.size = " + map.size());
    System.out.println("refKey.get = " + refKey.get());
    System.out.println("refValue.get = " + refValue.get());

Sin embargo, por alguna razón, si map.keySet()no se consulta en el bucle, nunca termina, es decir, refValueno se convierte null.

Respuesta 1

Vi este código en el sitio web del centro de capacitación de Android: boolean hasExternalStoragePrivateFile () {// Obtener la ruta del archivo en el almacenamiento externo. Si el almacenamiento externo // no está montado actualmente ...

Estoy creando archivos zip en GAE con Java, usando ZipOutputStream para subirlos a Google Cloud Storage. Sin embargo, necesito encriptar los archivos pero no sé cómo. ¿Alguien sabe cómo cifrar un ...

Tal vez esta es una pregunta para novatos, pero no puedo encontrar la respuesta. Necesito tropezar un método con Mockito. Si el método tiene argumentos "simples", entonces puedo hacerlo. Por ejemplo, un método de búsqueda con dos ...

Completé mi proyecto que me asignó la universidad, pero ahora estoy tratando de crear MDI para mi proyecto. Usé 10 jFrame y un formulario principal que también es jFrame, luego agregué una barra de menú, 10 ...