Gerenciador de memória (Threads)  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
emerson_web
Entusiasta Java

Membro desde: 05/05/2008 20:47:02
Mensagens: 17
Offline

Andei pesquisando sobre gerenciamento de MEMÓRIA em JAVA, já procurei em vários locais, até mesmo aqui no GUJ, mais tudo que encontrei fui alguns conceitos e códigos que não funcionaram.


A idéia e a seguinta:
- Listar os processo (Windows/Linux) em uma tabela. A idéia é mostrar em tempo real, onde os processos que forem sendo aberto vai sendo mostrados na tabela.
- Poder excluir o processo
- Poder abrir novos processos pela própria aplicação.

A idéia pode ser um pouco complexa, mais se alguém puder me ajudar de alguma forma eu ficaria GRATO!

This message was edited 1 time. Last update was at 25/03/2011 08:55:03

Kanin Dragon
Virtual Machine Man
[Avatar]

Membro desde: 01/02/2011 12:46:04
Mensagens: 682
Localização: Depende
Offline

Da uma olhada na classe Process.

http://www.guj.com.br/java/244602-calunia-desabafo

Dragão Torpente
Shidoshi Ninjutsu

Engenharia Eletrônica - ITA
Mestrado Engenharia Eletrica - UFRJ
Futuramente Doutorado - Harvard

SCJP 5
SCWCD 5
SCJD
SCBCD
SCDJWS
SCEA

Não respondo dúvidas via MP. Não seja egoista e abra um tópico.
emerson_web
Entusiasta Java

Membro desde: 05/05/2008 20:47:02
Mensagens: 17
Offline

Kanin Dragon, obrigado pela dica...
Já pesquisei aqui e verifiquei o uso da classe, era realmente o que eu precisava.
____________________


Alguem sabe como posso matar esses processo pelo PID?
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

Acredito que Java não seja a linguagem para isso.

Para usar Java você teria que:

1. Procurar bibliotecas JNA que permitam acessar esse tipo de informação (informações sobre processos, terminar processos, novo processo, etc.)

2. Usar comandos próprios do S.O. usado para resgatar os dados que você precisa, tratá-los e exibi-los. Exemplo: no Linux, você executaria o comando 'ps aux', trataria os dados e exibiria. Para terminar um processo, executaria 'kill <PID>' e assim por diante.

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Online

Você não pode matar processos nativos de dentro da jvm. No máximo pode enxergar os quê estão nela. O próprio sistema operacional já cuida de escalonar e endereçar esses processos. Uma boa idéia é aprender uma linguagem quê suporte ponteiros para se ter a noção de gerenciamento de memória.

www.citrox.com.br
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Se quiser instrumentar do java outros códigos java, dê uma olhada no pacote java.lang.instrument

Se quiser fazer um gerenciador genérico, use C++.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Online

ViniGodoy wrote:Se quiser instrumentar do java outros códigos java, dê uma olhada no pacote java.lang.instrument

Se quiser fazer um gerenciador genérico, use C++.


Por isso eu sou contra lecionar java nas universidades antes de c ou pascal. Só com esse tipo de linguagem se aprende como a máquina funciona.

www.citrox.com.br
Kanin Dragon
Virtual Machine Man
[Avatar]

Membro desde: 01/02/2011 12:46:04
Mensagens: 682
Localização: Depende
Offline

emerson_web,

Você pode utilizar a classe Process em conjunto com a classe RunTime, com essas 2 classes você pode consultar os processos inclusive finalizar o processo pelo PID.

Abs,

http://www.guj.com.br/java/244602-calunia-desabafo

Dragão Torpente
Shidoshi Ninjutsu

Engenharia Eletrônica - ITA
Mestrado Engenharia Eletrica - UFRJ
Futuramente Doutorado - Harvard

SCJP 5
SCWCD 5
SCJD
SCBCD
SCDJWS
SCEA

Não respondo dúvidas via MP. Não seja egoista e abra um tópico.
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Online

Kanin Dragon wrote:emerson_web,

Você pode utilizar a classe Process em conjunto com a classe RunTime, com essas 2 classes você pode consultar os processos inclusive finalizar o processo pelo PID.

Abs,


Mas isso não é uma solução adequada. Por exemplo se faltar memória virtual o sistema mata qualquer processo aleatóriamente e seu software não toma nem conhecimento disso.
Aliás a classe runtime vai usar o shell do sistema, o que vai deixar seu software lento(se for consultar cada processo que roda no SO).

O java não é uma boa solução para isso.

O framework Qt é bem robusto:

http://www.trinitydesktop.org/docs/qt4/qprocess.html#details

This message was edited 1 time. Last update was at 29/03/2011 12:53:33


www.citrox.com.br
felipeguerra
GUJ Ranger

Membro desde: 26/03/2007 16:36:54
Mensagens: 987
Localização: São Paulo
Offline

juliocbq wrote:
Por isso eu sou contra lecionar java nas universidades antes de c ou pascal. Só com esse tipo de linguagem se aprende como a máquina funciona.

Será que foi por isso que me ensinaram assembler/assembly na faculdade?

motherfuckers

"Antes da iluminação cortar lenha, carregar água. Depois da iluminação cortar lenha, carregar água..."
Kanin Dragon
Virtual Machine Man
[Avatar]

Membro desde: 01/02/2011 12:46:04
Mensagens: 682
Localização: Depende
Offline

juliocbq wrote:
Kanin Dragon wrote:emerson_web,

Você pode utilizar a classe Process em conjunto com a classe RunTime, com essas 2 classes você pode consultar os processos inclusive finalizar o processo pelo PID.

Abs,


Mas isso não é uma solução adequada. Por exemplo se faltar memória virtual o sistema mata qualquer processo aleatóriamente e seu software não toma nem conhecimento disso.
Aliás a classe runtime vai usar o shell do sistema, o que vai deixar seu software lento(se for consultar cada processo que roda no SO).

O java não é uma boa solução para isso.

O framework Qt é bem robusto:

http://www.trinitydesktop.org/docs/qt4/qprocess.html#details


juliocbq,

Meu pai é promotor de justiça e sempre menciona uma frase um tanto quanto boba, mas que no fundo faz muito sentido "Cada caso e um caso".

Alguns anos atrás precisei desenvolver uma ferramenta onde o usuário através de uma aplicação desktop realizava a busca por um determinado processo em seguida o usuário podia decidir entre finalizar o processo ou realizar algumas outras opções que não vem ao caso agora, na época não existia nenhum framework para esse tipo finalidade.

Nunca tivemos problemas com performance lembrando que a ferramenta acessava um servidor remotamente, oque poderia ser mais um empecilho.

Delimitamos quais processos o usuário podia enxergar e quais ações ele podia tomar em cima de cada processo, bem como delimitamos os processos que a ferramenta podia buscar no SO. Utilizando o bom censo e possível criar uma aplicação sem interferencias de performance.

Abs,

This message was edited 2 times. Last update was at 29/03/2011 15:41:48


http://www.guj.com.br/java/244602-calunia-desabafo

Dragão Torpente
Shidoshi Ninjutsu

Engenharia Eletrônica - ITA
Mestrado Engenharia Eletrica - UFRJ
Futuramente Doutorado - Harvard

SCJP 5
SCWCD 5
SCJD
SCBCD
SCDJWS
SCEA

Não respondo dúvidas via MP. Não seja egoista e abra um tópico.
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Online

Kanin Dragon wrote:

juliocbq,

Meu pai é promotor de justiça e sempre menciona uma frase um tanto quanto boba, mas que no fundo faz muito sentido "Cada caso e um caso".

Alguns anos atrás precisei desenvolver uma ferramenta onde o usuário através de uma aplicação desktop realizava a busca por um determinado processo em seguida o usuário podia decidir entre finalizar o processo ou realizar algumas outras opções que não vem ao caso agora, na época não existia nenhum framework para esse tipo finalidade.

Nunca tivemos problemas com performance lembrando que a ferramenta acessava um servidor remotamente, oque poderia ser mais um empecilho.

Delimitamos quais processos o usuário podia enxergar e quais ações ele podia tomar em cima de cada processo, bem como delimitamos os processos que a ferramenta podia buscar no SO. Utilizando o bom censo e possível criar uma aplicação sem interferencias de performance.

Abs,



Se a sua aplicação abrir e fechar um software(que é o shell, prompt, etc..) para cada processo na ram vai haver um overhead terrível por causa de múltiplos ios e de várias bibliotecas sendo carregadas e descarregadas com jni.

Como você citou cada caso é um caso, mas a diferença de desempenho é nítida. Além de ser muito mais prático escrever uma aplicação que necessita ouvir processos em c++ do que em java.

www.citrox.com.br
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team