Java e uso de CPU

0 respostas
D

Estou desenvolvendo um aplicativo em Java que executa um processo externo (ele roda um programa escrito em Clipper 5). Pra manter esse tipo de aplicação (em Clipper) rodando sobre o win2k e winXP é necessário usar de bibliotecas que permitam o YIELD para liberar o uso de CPU.

A aplicação em Clipper rodando sozinha não consome além 15% de CPU (monitorado pelo Gerenciador de Tarefas, guia Desempenho). O programa roda normalzinho.

Quando executado pela interface do aplicativo em Java (Swing), o aplicativo também entra e permanece normal (entre 1% e 5% de uso de CPU). Quando a opção que executa o processo externo é chamada, o uso de CPU sobe a 100%…; o processo externo termina (eu sei porque capturo o stream do processo e o mapeio com pipes para um JTextArea) e uso de CPU continua a 100% e não baixa!!

Um pedaço do código que executa o processo externo é esse:

Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd, null, fpath);
                  
StreamConsumer errConsumer = 
            new StreamConsumer(proc.getErrorStream(), "err", true);

StreamConsumer outConsumer = 
           new StreamConsumer(proc.getInputStream(), ">", false);
                  
errConsumer.start();
outConsumer.start();
                  
proc.waitFor();

Eu não sei bem o que fazer.
Logo após o proc.waitFor() eu coloquei um System.gc(). Ele baixa o consumo de 100% para cerca 50% quando o processo externo termina…; mas sobe de novo para 100% em seguida e não baixa mais!

Alguém tem alguma idéia do que possa ser?
Obrigado.

Criado 18 de janeiro de 2005
Respostas 0
Participantes 1