Estou jogando o objeto inteiro no vetor, aí eu nao preciso do id
int id=0;
for(Conta item : contas){
data[id][0]=item;
id+=1;
}
data[]
Estou jogando o objeto inteiro no vetor, aí eu nao preciso do id
int id=0;
for(Conta item : contas){
data[id][0]=item;
id+=1;
}
data[]
Boa noite ViniGodoy,
Será que é por isso que minha aplicação trava (estouro de memória da JVM).
Ela atualiza uma tabela a cada 30 segundos (Timer), cuja a mesma e demais do sistema utiliza DefaultTableModel.
De duas em duas horas preciso fechar a aplicação matando o processo.
Se puder me responder agradeço.
Abraço!
O ideal seria usar um profiler, como o VisualVM, e ver exatamente onde está seu gargalo de memória. Se estiver usando o Netbeans, ele tem um profiler ainda melhor.
PS: Evite ressuscitar tópicos muito antigos. Levei um tempão para descobrir o que era o “isso” que você falava na sua frase.
Me desculpe pelo tópico antigo, é que realmente me chamou a atenção sendo talvez uma solução para mim.
Minha aplicação roda a mais de 2 anos e não consegui resolver esse problema.
Utilizo sim o NetBeans. Você se refere a utilizar o ‘Perfil Projeto’ do NetBeans?
Tempos atrás eu fiz este teste e obtive o resultado conforme a figura.
Thread causando exceção OutOfMemoryError: [color=blue]AWT-EventQueue-0[/color]
Isso mesmo. Vai ali em instâncias e você vai ver que provavelmente existem centenas de instâncias da mesma classe. Pega algumas amostras e vasculha a quem essas instâncias estão ligadas. Depois, procura no seu código o porque essas instâncias não estariam morrendo.
Há altíssimas chances de haver alguma variável estática segurando esse pessoal todo.
Opa, Vini. Já é uma luz rsrs.
Vou fazer outra análise e te retorno com uma resposta positiva.
Por enquanto agradeço.
Boa Semana!
[quote=ViniGodoy]Isso mesmo. Vai ali em instâncias e você vai ver que provavelmente existem centenas de instâncias da mesma classe. Pega algumas amostras e vasculha a quem essas instâncias estão ligadas. Depois, procura no seu código o porque essas instâncias não estariam morrendo.
Há altíssimas chances de haver alguma variável estática segurando esse pessoal todo.[/quote]
Bom dia Vini. Cara eu passei a madrugada analisando o ‘Perfil do Projeto’. Vi muitas instâncias de classes repetidas (ex.: bytes = 255.299 instâncias), porém não sei se é relativo ao meu código escrito ou são das classes JAVA (String, Double…), percebi a memória tentando acompanhar o constante crescimento do consumo da aplicação até se esgotar, e analisei a quantidade de Threads sendo executadas, porém ainda não cheguei a nenhuma solução.
Acredito que minha necessidade fugiu do contexto deste tópico (Recuperar ID de Jtable), gostaria de criar uma nova discussão sobre o assunto (ex: Aplicação travando, estouro de Memória da JVM).
Posso prosseguir com essa ideia e contar com sua ajuda?
Ficaria muito grato.
Não lê os dados do BD (linha 60), Sempre entra no cath e da mensagem javalangnull
package Connection.Data.Base;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class ModeloTabela extends AbstractTableModel
{
private ArrayList linhas = null; //array para guardar linhas
private String[] colunas = null;//vetor para guardar colunas
public ModeloTabela(ArrayList line, String[] column)
{
setLinhas(line);
setColunas(column);
}
public ArrayList getLinhas()
{
return linhas;
}
public void setLinhas(ArrayList dados)
{
linhas = dados;
}
public String[] getColunas()
{
return colunas;
}
public void setColunas(String[] nomes)
{
colunas = nomes;
}
public int getColumnCount()
{
return colunas.length;//retorna a quantidade de colunas
}
public int getRowCount()
{
return linhas.size();//conta a quantidade de linhas
}
public String getColumnName(int numCol)
{
return colunas[numCol];
}
public Object getValueAt(int numLin, int numCol)
{
Object[] linha = (Object[])getLinhas().get(numLin);
return linha[numCol];
}
}
public void preencherTabela(String SQL)
{
ArrayList dados = new ArrayList();
String[] Colunas = new String[]{"Nome", "Cidade", "Estado"};
conecta.executaSQL(SQL);
try
{
conecta.rs.first();
do
{
dados.add(new Object[]{conecta.rs.getString("nome"), conecta.rs.getString("estado"),
conecta.rs.getString("cidade")});
} while (conecta.rs.next());// Enquanto houver dados no banco o loop continua
} catch (Exception e)
{
JOptionPane.showMessageDialog(null, "Erro ao preencher o ArrayList! \n Erro " + e);
}
ModeloTabela modelo = new ModeloTabela(dados, Colunas);
jTableTabela.setModel(modelo);
jTableTabela.getColumnModel().getColumn(0).setPreferredWidth(300);//Tamanho da coluna
jTableTabela.getColumnModel().getColumn(0).setResizable(false);// Nao pode alterar a largura da coluna, ou seja, não pode aumentar o tamanho com o mouse
jTableTabela.getColumnModel().getColumn(1).setPreferredWidth(300);
jTableTabela.getColumnModel().getColumn(1).setResizable(false);
jTableTabela.getColumnModel().getColumn(2).setPreferredWidth(80);
jTableTabela.getColumnModel().getColumn(2).setResizable(false);
jTableTabela.getTableHeader().setReorderingAllowed(false);// Nao pode reorganizar os campos da tabela
jTableTabela.setAutoResizeMode(jTableTabela.AUTO_RESIZE_OFF);// A tabela nao poderá ser redimensionada
jTableTabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// Poderá selecionar apenas um campo da tabela
}