| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 08:53:19
|
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
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 08:57:08
|
Kanin Dragon
Virtual Machine Man
![[Avatar]](/images/avatar/74f303673bc7765b1bd3fea078d185b5.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2011 09:19:33
|
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?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/03/2011 19:13:51
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/03/2011 20:06:49
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/03/2011 03:12:34
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/03/2011 15:53:03
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/03/2011 16:41:20
|
Kanin Dragon
Virtual Machine Man
![[Avatar]](/images/avatar/74f303673bc7765b1bd3fea078d185b5.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/03/2011 12:52:59
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/03/2011 14:31:31
|
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..." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/03/2011 15:33:40
|
Kanin Dragon
Virtual Machine Man
![[Avatar]](/images/avatar/74f303673bc7765b1bd3fea078d185b5.jpg)
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/03/2011 16:20:00
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
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 |
|
|
 |
|
|