programa em execução por 2 dias

3

Eu tenho um programa java que implementa o algoritmo húngaro. Fiz alterações no código existente de tal forma que a entrada é lida do arquivo. Eu tenho uma entrada muito grande em torno de 32.000 linhas para as quais estou calculando o peso máximo de borda.

O problema é, quando eu executo o programa usando o comando,

java Hungarian_algorithm.java

para o qual recebi um erro, java.lang.outofMemoryError:java Heap space error . Então, depois de pesquisar um pouco sobre o erro, eu corri o programa usando o comando abaixo.

java -d64 -Xms6g -Xmx8g Hungarian_algorithm

Eu iniciei a execução dois dias atrás e o programa ainda não produziu nenhuma saída. Então, decidi verificar o consumo de memória no servidor.

Saída do comando principal

PID    USER     PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
20760 ramesh    20   0 8482m 5.9g 3484 S  101 75.9   3099:13 java 

saída do comando free -m

 total       used       free     shared    buffers     cached
Mem:          7991       7937         54          0         37       1432
-/+ buffers/cache:       6467       1524
Swap:        30514       4626      25888

Devo esperar que o programa produza alguma saída ou algum erro pelo menos ou mate a execução do programa?

    
por Ramesh 13.03.2014 / 22:01

1 resposta

3

Com base na pergunta e nos comentários, você pode procurar a pilha de chamadas em execução do java por meio do comando jstack :

jstack processid

Se houver alguns segmentos esperando por um longo tempo em alguma condição, é mais provável que seja um impasse. Um impasse pode ser raro no código de nível de produção, mas comum no código multithread experimental. No primeiro caso, uma nova execução pode corrigir o problema, mas, no caso posterior, uma depuração detalhada pode ser necessária.

Espero que isso ajude.

    
por 13.03.2014 / 22:28