Como posso fazer para expandir o valor da memória usada pela JVM?
JVM - Expansão da memória
10 Respostas
Usando as opções -Xmx e -Xms
tipo
-Xms128m -Xmx512m
o Heap na JVM tera inicialmente 128 m e podera crescer até 512.
Onde eu posso setar estes parâmetros?
voce passa eles como argumentos para seu programa JAVA:
ex: java -Xmx256m
para mais opcoes, java -X
Eu estou usando -Xmx512m no eclipse para nao dar pau de memoria, mais que queria saber se existe outro modo de usar isso automatico no programa…
Assim, eu uso no eclipse e qdo gero um bat por exemplo para minha aplicação, eu ponho em forma de argumentos, da mesma forma que no eclipse.
No meu programa eu faco uma leitura de um arquivo txt de 10megas, depois eu gravo em arquivo nc dai dar esse estouro de memoria, acho que se eu fizer linha a linha nao vai dar esse estouro…
ex:
public ReadTxt(String dir,String fileName) throws IOException{
RandomAccessFile in = null;
try {
in = new RandomAccessFile(new File(dir+fileName),"r");
}
catch (FileNotFoundException e) {
// No caso do arquivo nao existir
System.out.println(“Arquivo Nao Encontrado”);
System.exit(0);
}
String str = null;
WriteNetcdf wn = new WriteNetcdf(dir,fileName);
String []info = new String[13];
int mes=0, recnum=0, j=0, i=0;
do{
if(j<1)
totalest = Integer.parseInt(in.readLine());
else{
info = str.split(" ");
}
wn.setAtributo(info[1]);
wn.setHora(info[2]);
wn.configField();
wn.writeRecNum(recnum);
wn.write(info,recnum);
wn.writeMonth(info,mes);
wn.writeData(info,mes,recnum);
recnum++;
j++;
} while ((str = in.readLine()) != null);
wn.close();
}
}
isse codigo ler o txt e faz uma inclusao de todos os dados dai estou tentando uma forma de utimizar esse codigo deixandooo mais rapido entendeu…
se vc souber o que uso pra ler linha a linha e sair incluindo registro a resgistro eu agradeço…
Streams
Pq vc nãu usa Streams?
File
outptstream
objectinputstreams…
estes são alguns, já li arquivos, streams escrevem sem broncas velho, não lembro a hierarquia completa de Streams, mas sei q começa com File :-D, é fácil trabalhar e muito seguro. Dá uma catada q aqui deve ter algo para trabalhar com stream
Pessoal,
Estou com um problema ao setar os valores para a JVM.
Quando dou o comando: #java -Xms512M
dá esse Erro:
Error occurred during initialization of VM
Incompatible initial and maximum heap sizes specified
Se eu der o comando: #java -Xms512M -Xmx1024M
Aparece o seguinte:
Usage: java [-options] class [args…]
(to execute a class)
or java [-options] -jar jarfile [args…]
(to execute a jar file)
where options include:
-d32 use a 32-bit data model if available
-d64 use a 64-bit data model if available
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecated]
The default VM is client.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A : separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
Algúem pode me ajudar com isso?
Estou precisando setar esses valores para rodar uma aplicação de importação de dados de um Xml de 95,6MB. Se tentar rodar com um Xml de 35MB por exemplo dá a mesma coisa, a aplicação está certinha, fazendo stream e tudo, já rodei antes em outra máquina e com Xml menores e roda sem problemas.
O SO aqui é o CentOS 5.
Agradeço desde já.
“Mas a vereda dos justos é como a luz da aurora, que vai brilhando mais e mais até ser dia perfeito.” Provérbios 4:18
[color=red] [/color] :!:
E aí galera alguém tem idéia de como posso resolver isso. Conto com a ajuda de vocês…
Valeu!! :!:
Se teu problema é no eclipse, tem que entrar em Window / Preferences / Java / Instaled JREs …
no quadro de lado tem as jre instaladas na maquina…
da um click na que está ativa e clica em editar…
no quadro Default VM Arguments informa -Xms128m -Xmx512m
Clica em OK em ambas janelas abertas.
Fecha o eclipse e volta a abrir …
Tem gente que fala que p Xmx pode ter um valor até 70% da ram instalada na maquina, mas, nao tenho visto melhor aproveitamento disso a nao ser em processos batch nao abortar por memoria full (unica melhoria que tenho visto).
Se estiver usando um tomcat com plugin pelo eclipse…
Enta em Window / Preferences / Tomcat / JVM settings e no quadro Append JVM Parameters informa os mesmos parametros.
Se nao for isso… perdi uma oportunidade de ficar queto