Armazenamento de Dados em uma String

8 respostas
newj

Olá amigos,

Estou tendo uma grande dificuldade em um armazenamento do código de uma página em uma String.
Estou montando uma página, e armazenando seu conteúdo em uma String, para depois dar um write no OutputStream.
O problema é que essa String está ficando com muitos caracteres, algo como String[482162]!
Saí a montagem da página está demorando quase 3 minutos!
Alguém poderia me dar uma ajuda em como poderia melhorar esse tempo deresposta/armazenamento?!

Abraço,

:wink:

8 Respostas

mcbarsotti

se o sistema não é concorrente ( não usa threads paralelas ) usa StringBuilder, senão StringBuffer.

faz os append necessarios e no fim do processo vc cria sua String usando o .toString();

abraços!

newj

mcbarsotti:
se o sistema não é concorrente ( não usa threads paralelas ) usa StringBuilder, senão StringBuffer.

faz os append necessarios e no fim do processo vc cria sua String usando o .toString();

abraços!

Valeu amigo!
Agora, uma dúvida. Em uma determinada concatenação, eu uso o substring. Com StringBuffer como poderia fazer isso?
Terei de fazer um append e dentro dele um substring?
Abraço,

:wink:

newj

Outra coisinha,

Agora está apresentando este erro na hora da montagem da página:

java.lang.OutOfMemoryError: Java heap space

E agora?!

newj

Olá galera,

Executei o JConsole no servidor onde está minha aplicação, e ele me deu o seguinte sumário:

Summary
Uptime: 
12 minutes
Process CPU time: 
26,000 seconds
Total compile time: 
2,037 seconds
 
Threads
Live Threads: 
   30
Peak: 
   31
Daemon threads: 
   24
Total started: 
   58
 
Memory
Current heap size: 
    63.823 kbytes
Committed memory: 
   520.320 kbytes
Maximum heap size: 
 1.040.512 kbytes
Objects pending for finalization: 
     0
Garbage collector: 
Name = 'Copy', Collections = 9, Total time spent = 0,461 seconds
Garbage collector: 
Name = 'MarkSweepCompact', Collections = 5, Total time spent = 2,090 seconds
 
Classes
Current classes loaded: 
10.189
Total classes unloaded: 
    0
Total classes loaded: 
10.189
 
Operating System
Total physical memory: 
 2.097.151 kbytes
Free physical memory: 
 2.097.151 kbytes
Committed virtual memory: 
   827.700 kbytes
O engraçado é que ele está apresentando como total de memória física 2.097.151 kbytes, sendo que no servidor a memória total é de 8GB. Os parâmetros de inicialização da JVM estão assim:
-vmargs
-Xms512m
-Xmx1024m
-Dcom.sun.management.jmxremote
-XX:PermSize=256M
-XX:MaxPermSize=512M

E mesmo assim continuo com o mesmo problema de java.lang.OutOfMemoryError: Java heap space no for que monta a página...

Alguém poderia me ajudar?!

Obrigado.

newj

Outro detalhe,

Coloquei a linha de comando dentro do for:

System.out.println("Java memory in use = " + ((Runtime.getRuntime().totalMemory()) - (Runtime.getRuntime().freeMemory())));

e ela mostra que ao chegar em 948MB de memória ele dá o erro.

Abaixo os valores printados:

Java memory in use = 55070104 // Início
Java memory in use = 55072464
Java memory in use = 55072464
Java memory in use = 55074824
Java memory in use = 55074824
Java memory in use = 55074992
Java memory in use = 55077040
Java memory in use = 55079088
Java memory in use = 55079088
Java memory in use = 55079256
Java memory in use = 55081304
Java memory in use = 55083352
Java memory in use = 55083352
Java memory in use = 55083520
Java memory in use = 55085568
Java memory in use = 55087616
Java memory in use = 55087616
Java memory in use = 55087784
Java memory in use = 55089832
Java memory in use = 55091880
Java memory in use = 55091880
Java memory in use = 55093928
Java memory in use = 55093928
Java memory in use = 55096288
Java memory in use = 55096288
Java memory in use = 55098336
Java memory in use = 55098336
Java memory in use = 55100696
Java memory in use = 55100696
Java memory in use = 55103160
Java memory in use = 55259192
Java memory in use = 55261240
Java memory in use = 55574472
Java memory in use = 55574472
Java memory in use = 55576520
Java memory in use = 55576520
Java memory in use = 55578568
Java memory in use = 55578568
Java memory in use = 55580664
Java memory in use = 55580664
Java memory in use = 55582736
Java memory in use = 55582736
Java memory in use = 55584784
Java memory in use = 55584784
Java memory in use = 55586904
Java memory in use = 55586904
Java memory in use = 55589024
Java memory in use = 55591384
Java memory in use = 55593744
Java memory in use = 55595792
Java memory in use = 55595792
Java memory in use = 55598152
Java memory in use = 55598152
Java memory in use = 55598320
Java memory in use = 55600368
Java memory in use = 55602416
Java memory in use = 55602416
Java memory in use = 55604464
Java memory in use = 55604464
Java memory in use = 55606824
Java memory in use = 55606824
Java memory in use = 55608872
Java memory in use = 55608872
Java memory in use = 55611232
Java memory in use = 55611232
Java memory in use = 55613280
Java memory in use = 55613280
Java memory in use = 55615640
Java memory in use = 55615640
Java memory in use = 55617688
Java memory in use = 55617688
Java memory in use = 55620048
Java memory in use = 55620048
Java memory in use = 55622096
Java memory in use = 55622096
Java memory in use = 55624456
Java memory in use = 55624456
Java memory in use = 55626504
Java memory in use = 55626504
Java memory in use = 55628864
Java memory in use = 55628864
Java memory in use = 55630912
Java memory in use = 55630912
Java memory in use = 55633272
Java memory in use = 55633272
Java memory in use = 55635320
Java memory in use = 55635320
Java memory in use = 55637680
Java memory in use = 55637680
Java memory in use = 55639728
Java memory in use = 55639728
Java memory in use = 55642088
Java memory in use = 55642088
Java memory in use = 55644136
Java memory in use = 55644136
Java memory in use = 55646232
Java memory in use = 55646232
Java memory in use = 55648304
Java memory in use = 55648304
Java memory in use = 55650352
Java memory in use = 55650352
Java memory in use = 55652472
Java memory in use = 55652472
Java memory in use = 55654592
Java memory in use = 55654592
Java memory in use = 55656640
Java memory in use = 55658688
Java memory in use = 55658688
Java memory in use = 55658856
Java memory in use = 55660904
Java memory in use = 55662952
Java memory in use = 55662952
Java memory in use = 55663120
Java memory in use = 55665168
Java memory in use = 55667216
Java memory in use = 55667216
Java memory in use = 55667384
Java memory in use = 55669432
Java memory in use = 55671480
Java memory in use = 55671480
Java memory in use = 55671648
Java memory in use = 55673696
Java memory in use = 55675744
Java memory in use = 55675744
Java memory in use = 55677792
Java memory in use = 55677792
Java memory in use = 55680152
Java memory in use = 55680152
Java memory in use = 55682200
Java memory in use = 55682200
Java memory in use = 55684560
Java memory in use = 55684560
Java memory in use = 55686608
Java memory in use = 55686608
Java memory in use = 55688968
Java memory in use = 55688968
Java memory in use = 55691016
Java memory in use = 55691016
Java memory in use = 55695112
Java memory in use = 55697160
Java memory in use = 55697160
Java memory in use = 55699520
Java memory in use = 55699520
Java memory in use = 55701568
Java memory in use = 55701568
Java memory in use = 55703928
Java memory in use = 55703928
Java memory in use = 55705976
Java memory in use = 55705976
Java memory in use = 55708336
Java memory in use = 55708336
Java memory in use = 55710384
Java memory in use = 55710384
Java memory in use = 55712744
Java memory in use = 55712744
Java memory in use = 55714792
Java memory in use = 55714792
Java memory in use = 55717152
Java memory in use = 55717152
Java memory in use = 55719200
Java memory in use = 55719200
Java memory in use = 55721560
Java memory in use = 55721560
Java memory in use = 55723608
Java memory in use = 55723608
Java memory in use = 55725656
Java memory in use = 55725656
Java memory in use = 55727704
Java memory in use = 55727704
Java memory in use = 55729752
Java memory in use = 55729752
Java memory in use = 55731800
Java memory in use = 55731800
Java memory in use = 55733848
Java memory in use = 55735896
Java memory in use = 55735896
Java memory in use = 55737944
Java memory in use = 55737944
Java memory in use = 55739992
Java memory in use = 55739992
Java memory in use = 55742040
Java memory in use = 55742040
Java memory in use = 55744088
Java memory in use = 55746136
Java memory in use = 55746136
Java memory in use = 55748184
Java memory in use = 55748184
Java memory in use = 55750232
Java memory in use = 55750232
Java memory in use = 55752280
Java memory in use = 55752280
Java memory in use = 55754328
Java memory in use = 55756376
Java memory in use = 55756376
Java memory in use = 55758424
Java memory in use = 55758424
Java memory in use = 55760472
Java memory in use = 55760472
Java memory in use = 55762520
Java memory in use = 55762520
Java memory in use = 55764568
Java memory in use = 55764568
Java memory in use = 55766616
Java memory in use = 55766616
Java memory in use = 55768664
Java memory in use = 55770712
Java memory in use = 55770712
Java memory in use = 55772760
Java memory in use = 55772760
Java memory in use = 55774808
Java memory in use = 55774808
Java memory in use = 55776856
Java memory in use = 55778928
Java memory in use = 55783560
Java memory in use = 55783560
Java memory in use = 55783728
Java memory in use = 55785776
Java memory in use = 55787824
Java memory in use = 55787824
Java memory in use = 55787992
Java memory in use = 55790040
Java memory in use = 55792088
Java memory in use = 55792088
Java memory in use = 55792256
Java memory in use = 55794304
Java memory in use = 55796352
Java memory in use = 55796352
Java memory in use = 55798400
Java memory in use = 55798400
Java memory in use = 55800448
Java memory in use = 55802560
Java memory in use = 55807224
Java memory in use = 56597896
Java memory in use = 56597896
Java memory in use = 56599944
Java memory in use = 56599944
Java memory in use = 56604040
Java memory in use = 56606088
Java memory in use = 56608136
Java memory in use = 56608136
Java memory in use = 56612232
Java memory in use = 58205560
Java memory in use = 61394912
Java memory in use = 61396960
Java memory in use = 67777016 // Aparentemente normal
Java memory in use = 24836280 // valor caí
Java memory in use = 24836280
Java memory in use = 24836280
Java memory in use = 24836280
Java memory in use = 24836280
Java memory in use = 24836280
Java memory in use = 24836280
Java memory in use = 24836280
Java memory in use = 24836280
Java memory in use = 24836280
Java memory in use = 24836280
Java memory in use = 24836280
Java memory in use = 24836280
Java memory in use = 24851016
Java memory in use = 24851016
Java memory in use = 24851016
Java memory in use = 24851016
Java memory in use = 24851016
Java memory in use = 24851016
Java memory in use = 24851016
Java memory in use = 24851016
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24865752
Java memory in use = 24880488
Java memory in use = 24880488
Java memory in use = 24880488
Java memory in use = 24880488
Java memory in use = 24880488
Java memory in use = 24880488
Java memory in use = 24880488
Java memory in use = 24895224
Java memory in use = 24895224
Java memory in use = 24895224
Java memory in use = 24895224
Java memory in use = 50459368
Java memory in use = 50459368
Java memory in use = 55198816
Java memory in use = 55198816
Java memory in use = 55198816
Java memory in use = 55198816
Java memory in use = 55198816
Java memory in use = 55198816
Java memory in use = 55198816
Java memory in use = 55198816
Java memory in use = 55198816
Java memory in use = 55198816
Java memory in use = 55208920
Java memory in use = 55208920
Java memory in use = 55208920
Java memory in use = 55208920
Java memory in use = 55208920
Java memory in use = 55208920
Java memory in use = 55219024
Java memory in use = 55219024
Java memory in use = 99076848
Java memory in use = 99076848
Java memory in use = 99076848
Java memory in use = 99081368
Java memory in use = 99081368
Java memory in use = 99081368
Java memory in use = 99081368
Java memory in use = 99081848
Java memory in use = 99086368
Java memory in use = 99086368
Java memory in use = 99086368
Java memory in use = 99086368
Java memory in use = 99090888
Java memory in use = 99090888
Java memory in use = 99090888
Java memory in use = 99095408
Java memory in use = 99095408
Java memory in use = 99095408
Java memory in use = 99100232
Java memory in use = 99100232
Java memory in use = 99100232
Java memory in use = 99104752
Java memory in use = 99104752
Java memory in use = 99109272
Java memory in use = 99109272
Java memory in use = 303666408 // Valor triplica
Java memory in use = 303666408
Java memory in use = 303666576
Java memory in use = 303670816
Java memory in use = 654478976
Java memory in use = 654481024
Java memory in use = 830239080
Java memory in use = 830239080
Java memory in use = 830239560
Java memory in use = 830241608
Java memory in use = 830243656
Java memory in use = 830243656
Java memory in use = 830245704
Java memory in use = 830245704
Java memory in use = 830248064
Java memory in use = 830248064
Java memory in use = 830250112
Java memory in use = 830250112
Java memory in use = 830252472
Java memory in use = 830254520
Java memory in use = 830257048
Java memory in use = 830259096
Java memory in use = 830259096
Java memory in use = 830263512
Java memory in use = 830265560
Java memory in use = 830267608
Java memory in use = 830267608
Java memory in use = 830269656
Java memory in use = 830269656
Java memory in use = 830271704
Java memory in use = 830271704
Java memory in use = 830273752
Java memory in use = 830273752
Java memory in use = 830275800
Java memory in use = 830277848
Java memory in use = 830277848
Java memory in use = 830279896
Java memory in use = 830279896
Java memory in use = 830282224
Java memory in use = 830282224
Java memory in use = 830284272
Java memory in use = 830286384
Java memory in use = 830291016
Java memory in use = 830291016
Java memory in use = 830291184
Java memory in use = 830293232
Java memory in use = 830295744
Java memory in use = 948931464
Java memory in use = 948933760 // fim

Os parâmetros setados no eclipse são:
-Xms1024m
-Xmx1024m

Qualquer ajuda é bem vinda!

T

Cara, você NÃO PODE USAR += para montar strings.

Nunca use; cole um papelzinho na cabeceira da sua cama e escreva “Eu nunca mais vou usar += para montar strings”.

Como é que você está montando sua string?

newj

thingol:
Cara, você NÃO PODE USAR += para montar strings.

Nunca use; cole um papelzinho na cabeceira da sua cama e escreva “Eu nunca mais vou usar += para montar strings”.

Como é que você está montando sua string?

Olá Thingol,

Estou usando StringBuffer…

StringBuffer pagina = new StringBuffer(); pagina.append("Teste"); pagina.append("1");

:wink:

newj

Existe alguma estrutura melhor que seja compatível com este tipo de armazenamento?

Criado 15 de setembro de 2008
Ultima resposta 16 de set. de 2008
Respostas 8
Participantes 3