| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/09/2002 20:16:53
|
Administrador
Java Eldar
Membro desde: 02/08/2002 12:27:02
Mensagens: 0
Offline
|
Assunto: Sim! Você também pode conseguir algo parecido no java! Basta você querer!
Você pode ler este artigo na íntegra http://www.guj.com.br/java.artigo.106.1.guj
Por favor, coloque os seus comentários sobre este artigo aqui.
This message was edited 1 time. Last update was at 19/07/2005 21:40:01
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/09/2002 00:56:59
|
FLC
JavaGuru
Membro desde: 15/08/2002 15:30:08
Mensagens: 212
Localização: São Paulo
Offline
|
Entao, mas no 1.o exemplo (pilha implementada com um vetor de objetos), mesmo havendo um memory leak, não é um memory leak tao grave assim. Imagine a situação:
1. vc enche a pilha....
2. vc esvazia a pilha....
ok, tds os objetos ainda estao com referencias validas, mas assim que a pilha começar a ser usada de novo, os objetos antigos terao suas referencias perdidas e serao removidos com o garbage collector!
Ou seja, se sua pilha for de tamanho 100, vc terá no maximo um leak de 100 objetos e que nunca serah maior que isso! E se vc fez uma pilha com esse tamanho, eh pq vc planejou o programa para rodar bem mesmo qdo a pilha estiver cheia!
Ahuaha... falei demais, mas resumindo td..... depois q vc enche a pilha uma vez, ela passa a ocupar sempre os 100 objetos na memoria, mesmo que vc tenha chamado pop ateh esvazia-la! Mas tb o leak nunca será maior q isso! E conforme a pilha enche de novo, os objetos antigos vao sendo "naturalmente desalocados"...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/09/2002 01:16:46
|
Paulo Silveira
Administrador
![[Avatar]](/images/avatar/a87ff679a2f3e71d9181a67b7542122c.jpg)
Membro desde: 07/08/2002 18:38:50
Mensagens: 4203
Localização: São Paulo
Offline
|
sim
devia ter deixado isso mais claro
mas voce tem muitos aplicativos que variam muito o tamanho da pilha! mudancas gigantescas
entao se voce usou uma vez com 10000, e ai passou a usar em media 20, ja era! um abraco!
e imagine que voce tem VARIAS pilhas! e voce tem esse tipo de erro em VARIOS lugares! esse fine tuning em java eh importante, e ele eh facil! entao nao devemos descosiderar!
|
http://blog.caelum.com.br twitter: @paulo_caelum
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/09/2002 01:22:13
|
FLC
JavaGuru
Membro desde: 15/08/2002 15:30:08
Mensagens: 212
Localização: São Paulo
Offline
|
Sim eh verdade nao devemos desconsiderar....
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/01/2003 14:03:16
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
concordo, mas o artigo mostra um possivel erro de programação, e não um erro do GC, o GC diz que elimina da memoria tudo o que não for mais acessivel ao programa, e em todos os exemplos do artigo, as variaveis continuavam acessiveis ao programa.
caso aquela posição do "Stack" fosse utilizada novamente o objeto antigo seria liberado da memoria
ou então se existisse um prev ou algo assim para incrementar novamente a variavel, os objetos seriam acessados novamente
se alguem achar que isto é realmente um erro do GC, para corrigilo, basta colocar uma interface de adivinhação nele para ele saber que você ainda guarda uma referencia para a variavel, mas você não quer mais utiliza-la
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/01/2003 15:25:51
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline
|
Mas vale lembrar que memory leak eh de fato erro de programacao.
Rafael
|
"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"
http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/01/2003 17:21:14
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
com certeza
coloquei o reply hoje pois passei uma meia hora mais ou menos provando para um amigo meu fanatico por .NET e fervoroso odiador do Java que o artigo não se tratava de um erro do GC e sim de como evitar um provavel erro de programação
no final ele concordou comigo, mas ele mandou a mesma mensagem para um monte de gente dizendo que o artigo se tratava de um BUG no GC do Java, o que não é verdade
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2003 18:45:36
|
marcoc
Entusiasta Java
Membro desde: 10/12/2002 19:41:34
Mensagens: 15
Offline
|
Ué paulo,
o médoto pop da classe StackSimplerrima está errado e vc apresenta a correção logo em seguida.
pop() está retornando uma referência a um objeto da pilha sem retirá-la de lá. Errado para o método pop() de manipulação de pilhas, mas de acordo com as regras da linguagem ( objetos são passados por referência ).
Alias, na pilha só existem referências. Se outra parte do código estiver usando uma das referências de uma pilha que vc acabou de destruir, o GC não fará nada com esta referência e vc continuará usando normalmente.
Este tema de referências a objetos é muito legal e gostaria que as pessoas que acreditam que este comentário está errado, não tivessem pena apontar erros.
Atenciosamente,
|
Marco Aurélio Costa |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2003 18:49:25
|
marcoc
Entusiasta Java
Membro desde: 10/12/2002 19:41:34
Mensagens: 15
Offline
|
Não ficou claro,
"este comentário está errado" se refere ao meu comentário e não o do paulo.
Atenciosamente,
|
Marco Aurélio Costa |
|
|
 |
|
|