Java - Heap vs acceso directo a memoria
Recientemente me encontrésun.misc.Unsafe
clase, lo que permite al usuario asignar, desasignar y, en general, acceder a la memoria de manera similar como en C. Leí en un par de blogs que abordan este problema, p.
MappedByteBuffer
más rápido que los objetos de montónEl artículo 1) parece estar en contradicción con los demás y no entiendo por qué. DirectMemoryBuffer está utilizandosun.misc.Unsafe
debajo del capó (así esMappedByteBuffer
), por lo que también deberían sufrir llamadas JNI como se describe en el artículo 1. Además, en el artículo 2, los accesos de memoria Off-heap se parecen a los del artículo 1 y dan resultados completamente opuestos.
¿Podría alguien comentar en general cómo proceder con la memoria fuera del montón, es decir, cuándo usarla, hay un beneficio significativo y, lo que es más importante, por qué un tema similar da resultados muy diferentes según los artículos anteriores? Gracias.