Qué ventajas tiene un generador de perfiles Java comercial sobre los gratuitos, p. el de Netbeans?

StackOverflow https://stackoverflow.com/questions/490858

  •  20-08-2019
  •  | 
  •  

Pregunta

De vez en cuando tengo que hacer un trabajo de creación de perfiles en el código Java, y me gustaría saber por qué debería hacer que mi jefe investigue en un perfilador comercial en lugar de solo usar el de Netbeans o JConsole.

¿Cuáles serían las características asesinas que garantizarían la inversión?

¿Fue útil?

Solución

Tengo experiencia usando tanto el generador de perfiles de NetBeans como JProbe. Para el perfil de rendimiento, he encontrado que Netbeans es bastante útil, pero donde JProbe es superior es para el perfil de memoria.

JProbe tiene herramientas superiores para comparar instantáneas de montón y encontrar la causa raíz de una pérdida de memoria. Por ejemplo, en JProbe puede ver imágenes de montón de forma visual como un gráfico, seleccionar nodos para investigar y luego eliminar referencias para ver si la instancia podría ser recogida de basura.

Otros consejos

En mi experiencia con JProfiler, es solo una experiencia más completa que el generador de perfiles de NetBeans. Es más fácil comenzar, más fácil interpretar la información y, aunque no la he medido, parece que JProfiler tiene un impacto menos negativo en el rendimiento de la aplicación que se perfila.

Además, JProfiler se integra muy bien con IntelliJ IDEA. Tengo que usar NetBeans para usar el generador de perfiles de NetBeans, lo cual es un inconveniente porque tengo que configurar manualmente un proyecto de forma libre para que coincida con el diseño de mi proyecto.

El generador de perfiles de NetBeans es utilizable. A diferencia de IntelliJ, no compraría una licencia de JProfiler para mis proyectos personales porque, a diferencia de un IDE, no es una herramienta que use todo el día todos los días. Sin embargo, para el trabajo remunerado no hay razón para no comprar una herramienta mejor. No es caro en comparación con el costo del tiempo de un desarrollador.

Si ya está utilizando Netbeans, entonces iniciar el generador de perfiles es fácil (a menos que esté utilizando un proyecto basado en Maven ... suspiro).

He usado perfiladores pagados, así como Netbeans. Netbeans hace el trabajo lo suficientemente bien (fue un poco difícil cuando salió por primera vez ... pero mucho mejor ahora).

El código que perfilo no es ENORME, así que no puedo decir si el tiempo dedicado a la creación de perfiles es un factor importante.

La respuesta es altamente subjetiva y depende totalmente de sus necesidades. Cosas para mirar:

1) facilidad de uso en su entorno (en el caso de NetBeans, es probable que el generador de perfiles incorporado sea más fácil.

2) el tiempo empleado en iniciar el perfil para obtener resultados útiles

3) ¿es un perfilador de muestreo o rastreo? (Aquí encontrará una descripción general: http://docs.hp.com/en/ 5992-0757 / ch05s01.html

4) ¿puede ver los resultados en vivo o tiene que esperar a que termine el perfil?

Aquí hay un enlace a una discusión de slashdot sobre los perfiladores de Java: http://ask.slashdot.org/article.pl?sid=06/06/30/0053237

No he usado el generador de perfiles de Netbeans, pero probé JProfiler, Yourkit y JProbe. Encontré Yourkit ligeramente mejor (principalmente comprado por el aspecto de usabilidad). Algunas de las características útiles son: (puede verificar si está disponible en Netbeans)

  • Perfiles J2EE (por ejemplo, muestra cuánto tiempo tomó una consulta SQL).
  • Comparación y anotación de instantáneas
  • Detector de punto muerto
  • Telemetría de excepción

Puede consultar más detalles en su sitio .

Yo diría que, listo para usar y más estadísticas de rendimiento. Me asignaron un trabajo de perfil el año pasado cuando estaba haciendo una pasantía en una multinacional. Utilicé el generador de perfiles InfraRED que utiliza la API orientada a aspectos Java (funciona con Aspectwerkz y AspectJ). Pero tuve que extender el generador de perfiles para obtener lo que mi gerente quería. Además, las estadísticas de rendimiento proporcionadas por el generador de perfiles eran limitadas.

Pero antes de seleccionar el generador de perfiles investigué algunos otros perfiladores de código abierto. Algunos de ellos eran triviales y no se ajustaban a lo que queríamos.

También agregaría eso, algunos de ellos simplemente no funcionan. Por ejemplo, si queremos recopilar estadísticas de rendimiento de una aplicación web, todos los perfiladores no son compatibles con las estadísticas requeridas para nosotros.

Con un perfilador completamente independiente, es mucho más fácil integrarlo con otras aplicaciones en su cadena de herramientas. Por ejemplo, supongamos que desea ejecutar el generador de perfiles como parte de su proceso de compilación (por ejemplo, una vez por noche). Algo así como JProfiler se integra fácilmente con ANT, mientras que los perfiladores integrados en IDEs pueden o no. Si tiene una máquina de compilación separada, instalar una copia local de un generador de perfiles tiene sentido, pero instalar un IDE completo solo para obtener acceso a un componente no lo tiene.

Si está utilizando Tomcat, podría considerar lambdaprobe

http://www.lambdaprobe.org/

(Es gratis)

Desde mi experiencia, el generador de perfiles YourKit es el más útil. Las pequeñas cosas de usabilidad realmente marcan la diferencia, pero también es la más completa, que contiene:

  • las instantáneas de memoria más completas y utilizables (que funcionan también con montones de 1GB +), con vista detallada de objetos y datos primitivos, para cada objeto. (por ejemplo, en hashmap, puede ver si los objetos se distribuyen uniformemente o si la mayoría se almacenan en el mismo depósito). Este detalle de las instantáneas de memoria y su facilidad de uso es mi razón principal para su kit.
  • muy poca sobrecarga (mucho menos que muchos otros perfiladores que utilicé)
  • comparación de instantáneas
  • perfiles J2EE
  • detector de punto muerto, estado de bloqueo (creo que aún no tiene java.concurrent.locks, el botón sincronizado es genial)

Entre otras cosas, también está mejorando constantemente, así que quién sabe lo que depara el futuro :)

Compare las funciones y vea si realmente necesita las funciones proporcionadas por el software comercial en lugar de las gratuitas. En caso afirmativo, vale la pena invertir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top