[ sendai @ 09.06.2007. 18:45 ] @
Ovako:
Imam najnoviju Javu 6 i pravim neke programcice i ucim vec neko vrijeme, medjutim kad sam danas isao pokrenuti takav jedan program dobio sam ovu poruku na konzoli:
Code:
  Error occurred during initialization of VM 
       Could not reserve enough space for object heap 


Dakle nemam dovoljno memorije na heapu.
Moze li mi netko objasniti kako da vidim koliko slobodne memorije imam na heapu i kako je povecati.
I kako zapravo radi ta Java sto se toga tice ne bi li garbage collector trebao oslobadjati
zauzetu memoriju.To mi se nije desavalo dok nisam poceo programirati u Javi.
Na internetu nisam nasao nista konkretno, pa stvarno molim pomoc.
Hvala.
[ anon315 @ 09.06.2007. 19:10 ] @
Ja sam skoro imao ozbiljan problem sa curenjem memorije u Web aplikaciji na OC4J kontejneru.

Na kraju se ispostavilo da je problematican default odnos nove/stare velicine generacija (=2). U pitanju je bio parametar NewRatio (http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp)

Ako nekog zanimaju detalji, mogu da ispricam celu pricu..

Dokument koji ce ti otvoriti oci ako mu dovoljno posvetis vremena je: http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html

Sto se tvoje price tice, verovatno ce ti posao zavrsiti parametri -Xmx i -Xms za alokaciju heapa.

A dobro pitanje bi bilo koliko uopste imas slobodne (kao i ukupne) memorije?

Offtopic:

Btw, nije mi jasno zasto je po defaultu na vecini kontejnera Java start parametar za velicinu permanentne generacije podesen na 64M (odnosno nije prepodesen, posto je ovo default), kad to uvek pravi probleme (narocito pri deploy/undeploy/redeploy akcijama)...
[ sendai @ 09.06.2007. 19:54 ] @
Vanja Petreski hvala ti za link definitivno cu pazljivo procitati.
Probavao sam nesto sa parametrima -Xmx i -Xms, medjutim bez uspjeha.Na zalost nije mi bas neka masina Pentium III, 797 MHz, 128 MB RAM.
Kako da provjerim koliko imam slobodne memorije i moze li se nekako rucno pocistiti ono sto je zauzeto(sorry ako je pitanje glupo).
Posto sam totalni pocetnik mozes li mi konkretno napisati koje velicine bi trebao unijeti u -Xmx i -Xms parametre i sto znace te skracenice.
[ bags @ 09.06.2007. 20:07 ] @
Meni se javljao jednom taj problem kad sam imao beskonacnu petlju. :)
[ anon315 @ 09.06.2007. 20:10 ] @
Za pocetak pogasi gomilu programa iz system traya :)))))

Elem:

-Xmsn

Specify the initial size, in bytes, of the memory allocation pool. This value must be a multiple of 1024 greater than 1MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. The default value is 2MB. Examples:

-Xms6291456
-Xms6144k
-Xms6m


-Xmxn

Specify the maximum size, in bytes, of the memory allocation pool. This value must a multiple of 1024 greater than 2MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. The default value is 64MB. Examples:

-Xmx83886080
-Xmx81920k
-Xmx80m

Postoji nacin da se eksplicitno pozove garbage collector, ali to nije dobro, preporuka je upravo da se podesi Java, odnosno odnosi generacija, tip kolektora i sl... Na taj nacin se postizu performanse...

Stvarno nemam pojma sta je problem kod tebe.

Aj probaj sa ovim:

Code:

java -Xms1M -Xmx10M bla bla..


Btw, jel mozes da pokrenes bilo koji program koji je uradjen u Javi?
[ anon315 @ 09.06.2007. 20:11 ] @
Citat:
bags: Meni se javljao jednom taj problem kad sam imao beskonacnu petlju. :)


To ce pre biti problem sa 100% zauzecem CPU, a ne problem sa memorijom..

Ovde JVM ne moze ni da se inicijalizuje, a kamoli da pokrene program.
[ sendai @ 09.06.2007. 20:35 ] @
Prvo hvala na pomoci :) .

Nisam mogao da pokrenem niti jedan Java program, cak ni da kompajliram jedan sto sam upravo bio napisao.Imao sam par browser dokumenata otvorenih i pokusao da otvorim jos i command prompt i nisam mogao dok nisam pogasio sve prozore osim jednog, jedna stranica se nije mogla do kraja ucitati, onda kad sam dodavao onaj tvoj link u favorites srusio mi se i browser.
Medjutim sad mi sve radi, a nisam nista napravio, kompajlirao sam program i pokrenuo ga.
Btw nemam puno programa koji se vrte u system tray samo one najpotrebnije.
[ anon315 @ 09.06.2007. 20:45 ] @
Ok onda sa taskbara :)))

Odgovor je znaci u tome da imas malo memorije, a browser ti nesto zabagovao, uzeo ti memoriju, pa ti je sve trokiralo. Zato ni Java nije htela da radi.

Ako planiras ozbiljnije da radis sa Javom, planiraj kupovinu novog racunara sa CPU koji ima dobar kes i sa dosta RAMa...
[ sendai @ 09.06.2007. 21:00 ] @
U taskbaru imam oko pet programa ali svi mi trebaju, znam da je za moj komp i to puno.
Naravno planiram ozbiljnije raditi s Javom i kupiti novi kompjuter.
-Jos jednom hvala :)
[ Black @ 10.06.2007. 12:20 ] @
Kada sam radio sa GlassFish-om, prilikom cestog redeploy-a EJB-ova mi se javljala greska Java.lang.OutOfMemoryError: PermGen space.
Problem sam resavao restartom servera (NetBeans), a posle sam video da Eclipse preporucuje da se startuje sa nekim parametrima, koji omogucavaju veci heap. Sa tim parametrima zadatim problem je nestao. Pretpostavljam da ima neke veze sa zaostalim referencama na stare klase, koje treba da budu zamenjene, ali nisam nikada shvatio zbog cega se to tacno desava.
[ anon315 @ 10.06.2007. 12:55 ] @
Upravo to se i meni desavalo. O tome i pricam, definitivno je posebna prica tuning performansi i to je ostavljeno adminima aplikacionog da srede.

U pitanju je parametar:

Code:

-XX:MaxPermSize=128m


Ja sam ga na OC4J naguzio na ovo i dosta je bolje (sad se zakucavanje desava jednom u 10 dana - da ne bude zabune, govorim o Standalone OC4J). To je potrebno posto aplikacioni koristi veliki broj klasa.
Pored toga, naravno, povecao sam i Xms i Xmx vrednosti...

Problem se javlja kada JVM ostane bez prostora u delu heapa za permanentu generaciju.

Fora je sto JVM ne moze da garbage collectuje stare klase koje su zamenjane, zbog toga sto postoje reference na njih. Takodje nisam ulazio u detalje zasto. Bitno mi je bilo da imam resenje..

Btw, analogno sa xms/xmx postoji i varijanta -XX:PermSize za inicijalno zauzece...

[Ovu poruku je menjao Vanja Petreski dana 10.06.2007. u 14:05 GMT+1]
[ Black @ 10.06.2007. 15:11 ] @
Eclipse preporucuje sledece:
Code:
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M


Od kada sam ubacio te parametre, nisam vise imao probleme u radu sa aplikacionim serverima.

Inace, imam 1 GB memorije.