programacion - que es un objeto en java
¿Qué es la agrupación de objetos en Java? (7)
Comprobar common-pools
proporciona una API de agrupación de objetos
Generalmente se usa para objetos cuya creación es costosa. Para evitar que usted mantenga un grupo de N objetos pre-creados y reutilizarlos.
¿Qué es la agrupación de objetos y qué es una referencia de objeto débil?
¿Cómo podemos implementarlos usando Java?
Implementé un ObjectPool simple en Java, ver aquí. Sin embargo, no usa una referencia de objeto débil. El propósito de la referencia de objeto débil es permitir recopilar una memoria de objeto incluso si hay referencias al objeto, pero son débiles. Es más útil para cachés que para grupos de objetos, aunque también se puede utilizar para ellos.
La idea del patrón de agrupación de objetos es similar a la de la biblioteca. Todos sabemos que es más barato y más fácil ir a una biblioteca y pedir prestado un libro en lugar de comprarlo. Además, es más barato (en lo que respecta a la memoria y la velocidad del sistema) que un proceso tome prestado un objeto en lugar de crear una instancia. Por lo tanto, dicho proceso en el que un proceso toma prestado un objeto de otro proceso se denomina agrupación de objetos.
Un grupo de objetos es cualquier colección de objetos que se reciclan, en lugar de recrearse cada vez que se necesitan.
Hay varias formas en las que puede implementar dicho grupo de objetos según sus requisitos. Los grupos de objetos utilizados para mejorar el rendimiento incluso para objetos simples, pero no son tan útiles en Java 5+.
Le sugiero que solo los use para objetos que estén conectados a recursos externos, como archivos, sockets o conexiones de base de datos.
Un grupo de objetos es una colección de un objeto particular que una aplicación creará y mantendrá a mano para aquellas situaciones en las que crear cada instancia es costoso. Un buen ejemplo sería una conexión de base de datos o un subproceso de trabajo. El grupo comprueba las instancias de entrada y salida de los usuarios, como los libros que salen de una biblioteca.
Por lo general, la agrupación de objetos es manejada por un servidor de aplicaciones Java EE. Si necesita hacerlo usted mismo, es mejor usar algo como el grupo de objetos de Apache. No escribas uno mismo; La seguridad de los hilos y otros problemas pueden complicarlo.
Here''s una buena referencia sobre referencias de objetos débiles.
Una referencia débil es un tipo de variable de referencia que es tratada especialmente por el recolector de basura.
Esto introduce otro tipo de accesibilidad, cualquier objeto puede ser:
- fuertemente accesible (accesible desde cualquier hilo de vida solo por referencias normales )
- débilmente accesible (no fuerte accesible, pero accesible por una referencia débil (o por múltiples formas, cada una de las cuales incluye una referencia débil))
- no alcanzable en absoluto
(También hay Referencias Blandas y Referencias Fantasma , las cuales las dejo aquí, funcionan de manera similar e introducen más niveles entre ellas).
Si un objeto no es accesible en absoluto, puede ser recolectado en cualquier momento. Si un objeto es muy accesible, no puede ser recolectado en absoluto. Si el recolector de basura encuentra que un objeto (o un grupo de objetos) es poco accesible (tal vez por múltiples referencias débiles), borra todas estas referencias a la vez , y luego los objetos no son accesibles (y pueden ser recolectados por la basura).
(En realidad, hay / puede haber un paso de finalización entre el "no accesible" y la colección, lo que también puede hacer que el objeto sea nuevamente accesible.)
Para usar referencias débiles, puede usar la clase java.lang.ref.WeakReference
: la referencia real se encuentra en una variable privada de esta clase y solo se puede establecer con el constructor y luego se puede borrar. Puede subclasificar esta clase, si necesita otros datos aparte de la referencia en sí misma, que aún debería estar allí cuando se borre la referencia.
Para un grupo de objetos en el sentido de "evitar la creación de instancias costosas", una referencia débil no es la herramienta correcta.
Agrupación y agrupación de objetos:
La agrupación básicamente significa utilizar los recursos de manera eficiente, al limitar el acceso de los objetos solo al período en que el cliente lo requiere.
El aumento de la utilización a través de la agrupación generalmente aumenta el rendimiento del sistema.
La agrupación de objetos es una forma de administrar el acceso a un conjunto finito de objetos entre los clientes de la competencia.
En otras palabras, la agrupación de objetos no es más que compartir objetos entre diferentes clientes.
Dado que la agrupación de objetos permite compartir objetos, los otros clientes / procesos necesitan volver a crear una instancia del objeto (lo que disminuye el tiempo de carga), en su lugar, pueden usar un objeto existente.
Después del uso, los objetos se devuelven a la agrupación.
Objeto de referencia débil:
Una referencia débil es un soporte para una referencia a un objeto llamado el referente.
Con referencias débiles puede mantener una referencia al referente sin evitar que se recoja basura.
Cuando el recolector de basura rastrea el montón, si las únicas referencias pendientes a un objeto son referencias débiles, el referente se convierte en candidato para GC como si no hubiera referencias pendientes y cualquier referencia débil pendiente se borra.
Recuerde, GC siempre, utilizando algunos algoritmos, recupere los objetos de difícil acceso.