Um Guia para Java Profilers
1. Visão geral
Sometimes writing code that just runs is not enough. Podemos querer saber o que acontece internamente, como como a memória é alocada, consequências de usar uma abordagem de codificação em relação a outra, implicações de execuções simultâneas, áreas para melhorar o desempenho, etc. Podemos usar perfis para isso.
Um Java Profiler é uma ferramenta quemonitors Java bytecode constructs and operations at the JVM level. Essas construções e operações de código incluem criação de objetos, execuções iterativas (incluindo chamadas recursivas), execuções de métodos, execuções de threads e coletas de lixo.
Neste artigo, iremos discutir os principais Java Profilers:JProfiler,YourKit,Java VisualVM eNetbeans Profiler.
2. JProfiler
O JProfiler é a melhor opção para muitos desenvolvedores. Com uma interface de usuário intuitiva, o JProfiler fornece interfaces para exibir o desempenho do sistema, uso de memória, possíveis vazamentos de memória e criação de perfil de encadeamento.
Com essas informações, podemos saber facilmente o que precisamos para otimizar, eliminar ou alterar - no sistema subjacente.
Esta é a aparência da interface do JProfiler:
Como a maioria dos criadores de perfil, podemos usar esta ferramenta para aplicativos locais e remotos. Isso significa que é possívelprofile Java applications running on remote machines without having to install anything on them.
JProfiler também forneceadvanced profiling for both SQL and NoSQL databases. Ele fornece suporte específico para criação de perfil de bancos de dados JDBC, JPA / Hibernate, MongoDB, Casandra e HBase.
A captura de tela abaixo mostra a interface de análise JDBC com uma lista de conexões atuais:
Se quisermos aprender sobrecall tree of interactions with our databasee verconnections that may be leaked, o JProfiler lida com isso muito bem.
O Live Memory é um recurso do JProfiler que nos permitesee current memory usage by our application. Podemos visualizar o uso da memória para declarações e instâncias de objetos ou para a árvore de chamadas completa.
No caso da árvore de chamada de alocação, podemos optar por exibir a árvore de chamada de objetos ativos, objetos coletados de lixo ou ambos. Também podemos decidir se essa árvore de alocação deve ser para uma classe ou pacote específico ou para todas as classes.
A tela abaixo mostra o uso da memória ao vivo por todos os objetos com contagem de instâncias:
JProfiler oferece suporte aintegration with popular IDEs, como Eclipse, NetBeans e IntelliJ. É até possívelnavigate from snapshot to source code!
3. YourKit
O YourKit Java Profiler é executado em muitas plataformas diferentes e fornece instalações separadas para cada sistema operacional suportado (Windows, MacOS, Linux, Solaris, FreeBSD, etc.).
Como o JProfiler, o YourKit possui recursos básicos para visualizar threads, coletas de lixo, uso de memória e vazamentos de memória, comsupport for local and remote profiling via ssh tunneling.
Aqui está uma rápida olhada nos resultados de perfil de memória de um aplicativo de servidor Tomcat:
YourKit também é útil quando queremosprofile thrown exceptions. Podemos facilmente descobrir quais tipos de exceções foram lançadas e o número de vezes que cada exceção ocorreu.
YourKit tem umCPU profiling feature that allows focused profiling on certain areas of our code interessante, como métodos ou subárvores em threads. Isso é muito poderoso, pois permite a criação de perfis condicionais através de seu recurso what-if.
A Figura 5 mostra um exemplo da interface de criação de perfil de encadeamento:
Também podemosprofile SQL, and NoSQL database calls com YourKit. Ele ainda fornece uma visualização para consultas reais que foram executadas.
Embora isso não seja uma consideração técnica, o modelo de licenciamento permissivo do YourKit o torna uma boa escolha para equipes multiusuário ou distribuídas, bem como para compras com uma única licença.
4. Java VisualVM
O Java VisualVM é uma ferramenta de criação de perfil simplificada e robusta para aplicativos Java. Por padrão, essa ferramenta ébundled with the Java Development Kit (JDK). Sua operação depende de outras ferramentas independentes fornecidas no JDK, comoJConsole,jstat,jstack,jinfo ejmap.
Abaixo, podemos ver uma interface simples de visão geral de uma sessão de criação de perfil em andamento usando o Java VisualVM:
Uma vantagem interessante do Java VisualVM é que podemosextend it to develop new functionalities as plugins. Podemos então adicionar esses plug-ins ao centro de atualização integrado do Java VisualVM.
Java VisualVM suportalocal and remote profiling, bem como memória e perfil de CPU. Connecting to remote applications requires providing credentials (nome do host / IP e senha conforme necessário)but does not provide support for ssh tunneling. Também podemos escolher habilitarreal-time profiling with instant updates (normalmente a cada 2 segundos).
Abaixo, podemos ver a perspectiva de memória de um aplicativo Java com perfil usando o Java VisualVM:
Com o recurso de instantâneo do Java VisualVM, podemostake snapshots of profiling sessions for later analysis.
5. NetBeans Profiler
O Perfilador do NetBeans ébundled with Oracle’s open source NetBeans IDE.
Embora este profilershares a lot of similarities with Java VisualVM, é uma boa escolha quando queremos tudo embrulhado em um programa (IDE + Profiler).
Todos os outros criadores de perfil discutidos acima fornecem plugins para aprimorar a integração dos IDEs.
A captura de tela abaixo mostra um exemplo da interface do NetBeans Profiler:
O Perfilador do Netbeans também é umgood choice for lightweight development and profiling. O NetBeans Profiler fornece uma única janela para configurar e controlar a sessão de criação de perfil e exibir os resultados. Ele oferece um recurso exclusivo de conhecerhow often garbage collection occurs.
6. Outros perfis sólidos
Algumas menções honrosas aqui sãoJava Mission Control,New Relic ePrefix (deStackify) - estes têm menos participação de mercado geral, mas definitivamente, merecem uma menção. Por exemplo, o Prefixo do Stackify é uma excelente ferramenta de criação de perfil leve, adequada para a criação de perfil não apenas de aplicativos Java, mas também de outros aplicativos da web.
7. Conclusão
Neste artigo, discutimos a criação de perfis e o Java Profilers. Analisamos os recursos de cada Profiler e o que informa a escolha potencial de um sobre o outro.
Existem muitos criadores de perfil Java disponíveis, alguns com características exclusivas. A escolha de qual profiler Java usar, como vimos neste artigo, depende principalmente da seleção de ferramentas do desenvolvedor, do nível de análise necessário e dos recursos do profiler.