¿Hay algo en la línea de punteros inteligentes C++ en Java?¿Hay "punteros inteligentes" en Java?
Respuesta
Todos los 'indicadores' (referencias) de Java son Smart Pointers.
Java se ejecuta en un entorno administrado. Lo que significa que Java usa un recolector de basura para limpiar las variables que ya no se referencian más.
Sin embargo, las referencias de Java son ligeramente diferentes de las de los indicadores. Java abstrae todos los valores del puntero y las matemáticas que ve en C++. Por lo tanto, cada vez que crea un nuevo objeto y lo almacena en una variable, lo almacena en la versión de Java de un "puntero inteligente".
Es posible que desee elaborar sobre cuál es la diferencia entre las referencias de Java y los punteros inteligentes de C++. – Pacerier
punteros inteligentes dan el control del desarrollador cuando están libres y se llama al destructor. Para la programación de baja latencia, eliminan los "nervios" en el tiempo de respuesta que son comunes en Java. punteros automáticos hacen eso también, y uno mejor: al colocar el objeto real en la pila en lugar de cualquier parte del montón está disponible, proporcionan una mejor ubicación. Ambas son las características que lamento no están disponibles en Java. –
No, no hay punteros de ninguna clase en Java. En general, no necesita punteros inteligentes porque ya tiene recolector de basura en su lugar haciendo recuento de referencias para administrar automáticamente el ciclo de asignación/liberación de memoria.
@ pablo-tx ... de modo que solo los recolectores de basura ayudan en la administración de la memoria? – garima
Esto no es exactamente cierto: un objeto en java ** es ** un puntero al recurso real. –
@garima: no estoy seguro de entender su pregunta, pero SÍ: los recolectores de basura ayudan en la administración de la memoria. –
Sí y no. No en eso, nada como un objeto puntero existe en Java. Sí, en el sentido de que cada objeto es un "puntero inteligente", lo que significa que está sujeto a la recolección de basura y se ocupa de su propia vida, por así decirlo.
Solo he oído hablar de punteros inteligentes en el contexto de la gestión de memoria. Como la administración de memoria es el núcleo de la plataforma Java, obviamente no hay necesidad de eso.
Las coincidencias más cercanas que se me ocurren son java.lang.ref.WeakReference y java.lang.ref.SoftReference, ya que permiten personalizar la recolección de elementos no utilizados hasta cierto punto.
- 1. Punteros inteligentes en Qt
- 2. Punteros inteligentes vs Referencia
- 3. punteros y matrices inteligentes
- 4. Boost punteros inteligentes
- 5. Punteros inteligentes y recuento de referencias en Java
- 6. impulsar punteros inteligentes y BOOST_NO_MEMBER_TEMPLATES
- 7. punteros inteligentes en C++: compartir punteros vs. compartir datos
- 8. Introducción a los punteros inteligentes en C++
- 9. usando mem_fun() para contenedor de punteros inteligentes
- 10. pros y contras de punteros inteligentes
- 11. ¿Cómo usar los punteros inteligentes de C++?
- 12. punteros inteligentes, typedefs y declaraciones directas
- 13. Punteros inteligentes y manejo de excepciones
- 14. ¿Cómo puedo usar tipos de retorno covariantes con punteros inteligentes?
- 15. C++ Punteros a punteros en Java
- 16. ¿Cómo eliminar punteros inteligentes de un caché cuando ya no hay más referencias?
- 17. Buscar fugas de memoria causadas por punteros inteligentes
- 18. ¿Por qué no debería usar referencias a punteros inteligentes?
- 19. Punteros inteligentes/gestión de memoria segura para C?
- 20. Cómo devolver punteros inteligentes (shared_ptr), por referencia o por valor?
- 21. ¿Debería una biblioteca usar una interfaz que utiliza punteros inteligentes?
- 22. Supresión del puntero al tipo incompleto y punteros inteligentes
- 23. Punteros de función en Java
- 24. Una vez que haya adoptado los indicadores inteligentes de boost, ¿hay algún caso en el que use punteros sin formato?
- 25. ¿Cuál es la mejor manera de implementar punteros inteligentes en C++?
- 26. Pestañas inteligentes en vim
- 27. ¿Por qué Java tiene una "NullPointerException" cuando no hay punteros en Java?
- 28. punteros de función/delegados en Java?
- 29. Fugas de C++ en caso de excepción incluso mediante el uso de punteros inteligentes
- 30. ¿Los punteros inteligentes excluyen la necesidad de una construcción en dos fases?
Creo que puede estar confundiendo algo allí. Los punteros inteligentes son un envoltorio alrededor de punteros crudos que proporcionan, p. recuento de referencias o comprobación de límites. Java no tiene punteros crudos y tiene GC incorporado. – delnan
Consulte la explicación en Wikipedia de los punteros inteligentes para obtener más información: http://en.wikipedia.org/wiki/Smart_pointer –
La implementación del lenguaje en sí misma (la JVM) se hace cargo de la mayoría (si no todos) los trabajos generalmente manejados por punteros inteligentes en C++. –