Memória JVM - Request e Singleton

3 respostas
rbonjour

Opa…

Seguinte, tenho uma aplicação que guarda um objeto em uma classe singleton, ou seja, só tenho uma instância do objeto que todo mundo compartilha.

Bom, essa aplicação é web e quando as pessoas acessam, eu envio esse objeto pelo request, então ele está sempre pra cá e pra lá, para cada usuário que acessa o site. Fiz isso para não fazer vários selects na tabela, pois os dados só mudam uma vez por semana.

Bom, a pergunta é: eu fazendo isso, enviando o objeto pro request, eu só estou apontando para o endereço da memória em que o objeto está certo ? A minha JVM não vai inflar ou dar problema por causa disso, certo ? Há problemas nesta prática ?

VALEU !

3 Respostas

fkimura

Se eu entendi direito o que você está fazendo, não precisa colocar nenhuma referência no request. Na verdade se é um Singleton, então você não precisa enviar pelo request, basta apenas acessar o metodo estático de acesso, que normalmente é criado. Algo como:

public class Singleton {

    private Singleton instancia = new Singleton();

    public static Singleton getInstancia() {
       return instancia;
    }

    private Singleton() {
    }
}

basta então, de qualquer lugar, para ter acesso ao singleton, fazer Singleton s = Singleton.getInstancia(); não é necessário colocar nada no request.
De resto é isso mesmo que você pensou, você está apenas enviando a referencia, desde que o sistema seja não distribuído ou clusterizado, é claro.

Link_pg

Olá!

Se é realmente um Singleton então o objeto é o mesmo… logo a posição de memória é a mesma…

Abraços

rbonjour
fkimura:
Se eu entendi direito o que você está fazendo, não precisa colocar nenhuma referência no request. Na verdade se é um Singleton, então você não precisa enviar pelo request, basta apenas acessar o metodo estático de acesso, que normalmente é criado. Algo como:
public class Singleton {

    private Singleton instancia = new Singleton();

    public static Singleton getInstancia() {
       return instancia;
    }

    private Singleton() {
    }
}

basta então, de qualquer lugar, para ter acesso ao singleton, fazer Singleton s = Singleton.getInstancia(); não é necessário colocar nada no request.
De resto é isso mesmo que você pensou, você está apenas enviando a referencia, desde que o sistema seja não distribuído ou clusterizado, é claro.

E tem como fazer isso com JSTL ? Pq não uso nada de código java nos meus JSP, só html e jstl.....

Criado 5 de maio de 2008
Ultima resposta 6 de mai. de 2008
Respostas 3
Participantes 3