Eclipse Launcher

Setembro 12, 2008 on 1:42 pm | In Sem categoria | No Comments

Algumas vez se perguntaram porque é que umas vezes o Eclipse arranca um único processo chamado “eclipse”, e outras vezes arranca dois processos, um chamado “eclipse” e outro chamado “javaw”? A resposta está aqui.

Resumidamente, quando o pedaço de código do eclipse que é nativo de cada plataforma consegue iniciar uma JVM por JNI, temos um único processo, quando não consegue usa os executáveis do JRE em causa, o que resulta num novo processo. Uma forma de forçar a invocação por JNI e, consequentemente, a existência de um único processo, é especificar a opção “-vm” na linha de comando ou no ficheiro eclipse.ini  e apontá-la directamente para o ficheiro jvm.dll (ou libjvm.so) do JRE em causa. Isto pode ser particularmente importante quando se tem que parar programaticamente o eclipse em plataformas que não sabem muito bem gerir a hierarquia entre processos (leia-se: Windows): 

The fundamental problem here is that, unlike Unix, Windows does that maintain parent-child relationships between processes. A process can kill its own immediate children, but unless you make other arrangements to obtain the information, can’t kill any ’grand-children’ because it has no way of finding them. Ctrl-C types at a command prompt is just a character that the command processor interprets and not a signal sent from outside. When you ‘destroy’ a child command script, that process does not get the opportunity to terminate any child processes it may know about. Recent versions of WIndows (2000 or later) do provide a “Job” concept which acts as a container for processes. Killing a Job does terminate all processes associated with that job. However Jobs do not contain other jobs, so fully emulating the Unix behaviour is probably impossible. [Sun Bug ID: 4770092]      

  

Share

Java Profilling – TPTP

Setembro 3, 2008 on 4:45 pm | In performance | No Comments

Cada vez mais me convenço que, logo a seguir a um debugger, uma ferramenta de profiling é das mais importantes para quem desenvolve software.A minha mais recente descoberta é precisamente um profiler para aplicações Java desenvolvidas em (e/ou para) Eclipse. Chama-se TPTP, que é acrónimo para Testing and Performance Tools Platform, e foi um bocadinho difícil de pôr a funcionar em Vista por causa do UAC, mas valeu bem o esforço.Esta ferramenta permite analisar com muito detalhe a utilização de CPU. Dá para fazer drill-down por package, classe e método; ver tempos gastos em cada nível da call stack, ou acumulados daí para baixo; e até desenhar gráficos de chamadas e dependências (que me parecem pouco úteis para projectos já com alguma dimensão, mas enfim).Não explorei muito as capacidades de Memory Analysis, porque não era o mais relevante para o projecto em causa, mas também estão lá. Só a performance de rede é que não está contemplada nesta plataforma, mas para isso existem o JMeter (se for HTTP) e o Wireshark (em todos os outros casos), que fazem muito bem o seu trabalho. 

Share

© procself. Este blog está alojado no FEUP Blogs. Crie também o seu blog.
Subscreva os Artigos (RSS) e os Comentários (RSS) do procself.