Prezados, tenho um problema com uma aplicação que usa socket e recebe um array. O problema é que se o array for grande (100000) ocorre o erro:
Exception in thread “AWT-EventQueue-0” java.lang.OutOfMemoryError: Java heap space.
Já tentei quebrar o array em outros arrays para o envio/recebimento mas o mesmo ocorre. Usei o utilitário profiler que mostrou que durante o recebimento a grande utilização de memória até que dá erro. Ai tem o trecho de código da aplicação onde ocorre o erro.
File [] meuArray=null;
InputStream in = socket.getInputStream();
ObjectInputStream receive= new ObjectInputStream(in);
meuArray=(File [])receive.readObject(); //OCORRE ERRO!
Só ocorre erro durante o recebimento do objeto. Alguém tem idéia de como resolver isso.
Amigo, eu sempre digo: se você quer perder seu emprego, use ObjectInput/OutputStream com sockets.
Uma hora vão aparecer problemas que não serão possíveis de resolver sem rearquitetar sua solução.
[quote=Claudio Nazzari]Altere o espaco alocado de memoria para a JVM com os argumentos -Xms(minimo) e -Xmx(maximo)…
Da uma olhada: http://www.guj.com.br/posts/list/43775.java
[/quote]
Eu realmente acho isso uma solução paleativa. Uma boa arquitetura não deveria consumir toda memória da máquina para uma transmissão socket.