¿Es posible ver cuánto montón está usando un objeto?

Si tengo un List<Object>, ¿sería posible ejecutar algún método en cada Objeto para ver cuánta memoria está consumiendo cada uno? No sé nada sobre cada Objeto, puede ser un archivo de video completo cargado en el montón o simplemente una cadena de dos bytes. En última instancia, me gustaría saber qué objetos dejar caer primero antes de quedarse sin memoria.

Creo que Runtime.totalMemory()muestra la memoria utilizada actualmente por la JVM, pero quiero ver la memoria utilizada por un solo objeto.

Respuesta 1

Esto es lo mejor que he visto ... En Java, ¿cuál es la mejor manera de determinar el tamaño de un objeto?

Respuesta: 2

SoftReference se parece a lo que necesitas. Cree una lista de referencias suaves a sus objetos, y si esos objetos no están referenciados en ningún lado y se queda sin memoria, JVM eliminará algunos de ellos. No sé qué tan inteligente es el algoritmo para elegir qué eliminar, pero también podría eliminar aquellos que liberarán más memoria.

Respuesta: 3

Si está en un contenedor, puede usar Jconsole http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html

El jdk desde 1.5 viene con ulits de volcado de pila ... ¿Estás en un contenedor o en eclipse? Además, ¿por qué tienes una lista de objetos?

Respuesta: 4

No hay una forma limpia de hacerlo. Puede crear un OutputStream ficticio que no hará más que contar el número de bytes escritos. Por lo tanto, puede hacer una estimación sobre el tamaño del gráfico de su objeto serializándolo en dicha secuencia.

No recomendaría hacerlo en el sistema de producción. Yo, personalmente, lo hice una vez para experimentar y hacer estimaciones.

Respuesta: 5

En realidad, otra táctica posible es simplemente hacer una carga de instancia de la clase que desea verificar (como un millón en una matriz).

La gran cantidad de objetos debería negar la sobrecarga (ya que la sobrecarga de otras cosas será mucho menor que la carga de basura de los objetos).

Por supuesto, querrá ejecutar esto de forma aislada (es decir, public static main ()).

Admito que necesitarás mucha memoria para esta prueba.

Respuesta: 6

¿Cómo elimino palabras de un archivo de texto que tienen símbolos que las preceden? Por ejemplo: Esta es información importante ... // pero este es un comentario Esta es información más importante ... // y esta es otra ...

Necesito dejar que un usuario mueva una imagen en la pantalla y cambiar su tamaño también. Esa parte ya la he logrado. La parte que no puedo entender es cómo, al tomar una foto, congelar el ...

¿Hay alguna manera de registrar las solicitudes JAX-RS entrantes? ¿O se trata más o menos de registrar solicitudes HTTP?

Si tengo la intención de crear un conjunto de API que permita a otros desarrolladores interactuar con mi aplicación, ¿cómo debo estructurar este conjunto de API en el sentido de empaquetado? Estoy considerando esto ... Para todos ...