| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2011 15:30:54
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
Boa tarde, o titulo ja diz tudo, o sistema possui apenas 3 threads ativas (ServerSocket) que ficam aguardando a conexão de um cliente. O grafico abaixo mostra o sistema rodando por uma hora sem nenhuma atividade. Alguem saberia me explicar o que pode estar acontecendo?
Grato pela atenção
|
C'est la vie monsieur excentrique... |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2011 15:53:18
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
Tem certeza de que esses Sockets não recebem absolutamente nenhum dado?
Já aplicou algum profiler?
[]'s
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2011 16:55:34
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
certeza, os sockets estao configurados pra trabalhar em blocking, tenho uma flag indicando qdo recebe alguma informação. E como assim aplicou algum profiler? Se quer dizer usar o profiler do netbeans, por exemplo, apresenta o mesmo grafico.
|
C'est la vie monsieur excentrique... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/09/2011 12:58:32
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
Você tem que fazer um profiler e ver qual tipo de dado está ocupando memória. Normalmente e alguma lista que esqueceu de liberar.
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/09/2011 15:23:55
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
Está rodando em Application Server ou standalone?
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/09/2011 20:34:38
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
Ocupar um espaço da memoria blz, pq tenho varios Map, o que me chama a atenção é o gasto alto de memoria em standby, pq chega uma hora ke acaba alocando toda a memoria e ocasiona uma exceção.
E estou rodando em uma jvm standalone.
|
C'est la vie monsieur excentrique... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/09/2011 06:44:11
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
Hebertbc wrote:Ocupar um espaço da memoria blz, pq tenho varios Map, o que me chama a atenção é o gasto alto de memoria em standby, pq chega uma hora ke acaba alocando toda a memoria e ocasiona uma exceção.
E estou rodando em uma jvm standalone.
Você não espera que o gc libere automáticamente uma coleção de maps que estão referenciados em memória né!? Verifica se eles ainda estão alocados. Talvez você esteja adicionando nos maps e não está gerenciando o tamanho dele. Isso aí é um memory leak.
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/09/2011 07:34:44
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
juliocbq wrote:
Hebertbc wrote:Ocupar um espaço da memoria blz, pq tenho varios Map, o que me chama a atenção é o gasto alto de memoria em standby, pq chega uma hora ke acaba alocando toda a memoria e ocasiona uma exceção.
E estou rodando em uma jvm standalone.
Você não espera que o gc libere automáticamente uma coleção de maps que estão referenciados em memória né!? Verifica se eles ainda estão alocados. Talvez você esteja adicionando nos maps e não está gerenciando o tamanho dele. Isso aí é um memory leak.
Pra fazer o que o juliocbq está falando, você pode usar o JProfiler. Vai ser mais eficiente que o profiler do Netbeans
[]'s
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/09/2011 10:04:02
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
juliocbq wrote:
Você não espera que o gc libere automáticamente uma coleção de maps que estão referenciados em memória né!? Verifica se eles ainda estão alocados. Talvez você esteja adicionando nos maps e não está gerenciando o tamanho dele. Isso aí é um memory leak.
Correto, porem os maps são estaticos.
asaudate wrote:Pra fazer o que o juliocbq está falando, você pode usar o JProfiler. Vai ser mais eficiente que o profiler do Netbeans
[]'s
Blz, vou testar aqui.
This message was edited 1 time. Last update was at 05/09/2011 10:06:22
|
C'est la vie monsieur excentrique... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/09/2011 11:38:17
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
Hebertbc wrote:
juliocbq wrote:
Você não espera que o gc libere automáticamente uma coleção de maps que estão referenciados em memória né!? Verifica se eles ainda estão alocados. Talvez você esteja adicionando nos maps e não está gerenciando o tamanho dele. Isso aí é um memory leak.
Correto, porem os maps são estaticos.
asaudate wrote:Pra fazer o que o juliocbq está falando, você pode usar o JProfiler. Vai ser mais eficiente que o profiler do Netbeans
[]'s
Blz, vou testar aqui.
ok, mas o que os impedem de expandirem?
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/09/2011 15:33:37
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
Os Map não espandem pois são dados estaticos, para dados dinamicos possuo outros Map (exemplo: lista de clientes conectados)
O sistema funciona assim:
-Inicio do sistema, carrego os dados em Map estaticos
-Sistema em standby aguardando a conexão de algum cliente
caso algum cliente conecte:
-cliente conecta
-Inicia uma thread para o cliente
-cliente executa suas ações, comunicação via sockets
-cliente desconecta, caso o cliente criou alguma thread, todas sao finalizadas
Porem apenas iniciando o sistema, sem nenhuma conexão (certeza!), o mesmo apresenta esse grafico, e como pode ver deixei ele parado por mais de 1h.
This message was edited 1 time. Last update was at 05/09/2011 15:35:12
|
C'est la vie monsieur excentrique... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/09/2011 22:55:28
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
Hebertbc wrote:Os Map não espandem pois são dados estaticos, para dados dinamicos possuo outros Map (exemplo: lista de clientes conectados)
O sistema funciona assim:
-Inicio do sistema, carrego os dados em Map estaticos
-Sistema em standby aguardando a conexão de algum cliente
caso algum cliente conecte:
-cliente conecta
-Inicia uma thread para o cliente
-cliente executa suas ações, comunicação via sockets
-cliente desconecta, caso o cliente criou alguma thread, todas sao finalizadas
Porem apenas iniciando o sistema, sem nenhuma conexão (certeza!), o mesmo apresenta esse grafico, e como pode ver deixei ele parado por mais de 1h.
A keyword static só garante que você terá um endereço de memoria, não que ele não possa crescer se você adicionar objetos a ele. Verifica se você não esqueceu de gerênciar esses maps em algum momento.
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/09/2011 08:05:30
|
Hebertbc
JavaChild
![[Avatar]](/images/avatar/4a91f7314e289f078ec79edba82bc972.jpg)
Membro desde: 07/11/2008 20:27:15
Mensagens: 113
Localização: Campo Grande / MS
Offline
|
qual sua definição para gerenciar? desculpe-me a pergunta ^^
obs: quando digo 'dados estaticos', é com garantia que não serao modificados, apenas referenciados por outros objetos.
This message was edited 1 time. Last update was at 06/09/2011 08:48:10
|
C'est la vie monsieur excentrique... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/09/2011 18:13:10
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
Hebertbc wrote:qual sua definição para gerenciar? desculpe-me a pergunta ^^
obs: quando digo 'dados estaticos', é com garantia que não serao modificados, apenas referenciados por outros objetos.
Quando você disse estatico imaginei que fossem static.
Quando você usar a jvisualvm, no profiler existe uma opção para ver o que esta alocado na heap. Com base nó tipo do dado voce Vai ter ideia do objeto que mais aloca em um curto espaço de tempo. A regra e não deixar nenhum conteiner referenciado por outro objeto. O gc só coleta o que não possui contador de referencia.
|
www.citrox.com.br |
|
|
 |
|
|