Title: Requisitos de hardware para o servidor de aplicacao J2EE
Em primeiro lugar isto � uma consequ�ncia do modelo Garbage Collection + finalize: se um objeto vai ter c�digo executado justamente antes de ser coletado como lixo (finalize), esse mesmo c�digo pode ter o efeito colateral de tornar o objeto (ou outros objetos) referenci�vel(is) novamente. � uma situa��o com a qual o garbage collector e n�s devemos estar preparados para lidar.
 
Uma utilidade? Que tal um pool de objetos que cresce dinamicamente conforme as exig�ncias de sua aplica��o?
 
public class Poolable
{
    private ObjectPool _myPool;
 
    public Poolable(ObjectPool pool)
    {
        _myPool = pool;
    }
 
    protected void finalize()
    {
        // me devolvo ao pool j� que algu�m esqueceu
        // de me devolver
        _myPool.returnToPool(this);       
    }
}
 
public class ObjectPool
{
    java.util.LinkedList_available;
 
    public ObjectPool()
    {
        _available = new java.util.LinkedList();
    }
 
    public synchronized object get()
    {
        if (_available.size() > 0)
        {
            return _available.removeLast();
        }
        return new Poolable(this);
    }
 
    public synchronized void returnToPool(object item)
    {
        _available.add(item);
    }
}
 
A �nica maneira de matar realmente os objetos Poolable � matando o ObjectPool ao qual eles pertencem. Obviamente em uma situa��o real voc� ir� desejar limitar o tamanho m�ximo do pool, isso fica como exerc�cio ao leitor ;-)
 
Rodrigo
 
----- Original Message -----
Sent: Tuesday, October 01, 2002 2:37 PM
Subject: RE: [enterprise-list] Ressurei��o de objetos

E pra que serve isso? Existe alguma utilidade, ou � apenas enxergado como uma anomalia da oo??
 
Francis
 
 
-----Original Message-----
From: Rodrigo B. de Oliveira [mailto:[EMAIL PROTECTED]]
Sent: ter�a-feira, 1 de outubro de 2002 14:39
To: [EMAIL PROTECTED]; Bruno Borges
Subject: Re: [enterprise-list] Ressurei��o de objetos

Sim, existe. Ressurei��o de objetos � o nome dado ao processo pelo qual um objeto ap�s ter sido selecionado para garbage collection (basicamente ter se tornado unreachable) torna-se reachable novamente. � simples assim. Apenas o termo � um pouco exagerado.

<quote source="http://www.javaworld.com/javaworld/jw-06-1998/jw-06-techniques-p3.html">
What finalization grants to programmers is power over the life and death of objects. In short, it is possible and completely legal in Java to resurrect objects in finalizers -- to bring them back to life by making them referenced again. (One way a finalizer could accomplish this is by adding a reference to the object being finalized to a static linked list that is still "live.")
</quote>

Rodrigo

----- Original Message -----
From: Bruno Borges
To: [EMAIL PROTECTED]
Sent: Tuesday, October 01, 2002 1:53 PM
Subject: Re: [enterprise-list] Ressurei��o de objetos


nao creio q isso seja um bom exemplo de ressurei��o... ali�s, nao creio q exista isso...
no exemplo q vc deu, ao q parece existir� somente uma instancia da classe Foo, e o q tem ali eh mais um 'xunxo' do q um metodo de ressurei��o... afinal de contas, o q vc estah fazendo na verdade eh impedir q o objeto seja levado pelo gc...

sinceramente, nao sei se existe esse negocio de ressurei��o de objetos...
ou vc manda o objeto pro espa�o, ou vc mantem uma refer�ncia a ele em algum lugar...

se existisse, teria algo do tipo:
Foo foo = new Foo();
foo = null;
foo = System.getLastReference(foo);

sei lah... :)
----- Original Message -----
From: Rodrigo B. de Oliveira
To: [EMAIL PROTECTED]
Sent: Tuesday, October 01, 2002 11:41 AM
Subject: Re: [enterprise-list] Ressurei��o de objetos


public class Foo
{
    public static Foo instance = null;

    protected void finalize()
    {
        System.out.println("Foo.finalize");
        instance = this;
    }

    public static void main(String[] args)
    {
        new Foo(); // [1]
        System.gc();
        Foo.instance = null;
        System.gc();
        Foo.instance = null;
        System.gc();
    }
}

Eu n�o executei o c�digo acima, mas ele provavelmente ilustra o que significa ressurei��o de objetos.
Quando o m�todo finalize � executado na inst�ncia [1] (pq ela est� unreachable), a refer�ncia this � atribu�da
a uma regi�o reachable do c�digo e portanto, o objeto � ressucitado (fica dispon�vel para execu��o novamente).

Rodrigo
       
----- Original Message -----
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Tuesday, October 01, 2002 11:07 AM
Subject: [enterprise-list] Ressurei��o de objetos


Bom dia, alguem ja ouviu falar em ressurei��o de objetos???

Abcs,

Francis



---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para: [EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]


---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para: [EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]

Responder a