JVM - Expansão da memória

10 respostas
A

Como posso fazer para expandir o valor da memória usada pela JVM?

10 Respostas

Rubem_Azenha

Usando as opções -Xmx e -Xms

tipo

-Xms128m -Xmx512m

o Heap na JVM tera inicialmente 128 m e podera crescer até 512.

Mrwin

Onde eu posso setar estes parâmetros?

T

voce passa eles como argumentos para seu programa JAVA:
ex: java -Xmx256m

para mais opcoes, java -X

cgalvao

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…

Mrwin

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.

cgalvao

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…

Mrwin

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

tarcisio.lisboa

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] :!:

tarcisio.lisboa

E aí galera alguém tem idéia de como posso resolver isso. Conto com a ajuda de vocês…
Valeu!! :!:

G

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

Criado 20 de junho de 2006
Ultima resposta 6 de fev. de 2009
Respostas 10
Participantes 7