Gestione della memoria in Windows
mercoledì 3 agosto 2011 alle 03:51 | Pubblicato in Linux, Varie | 1 commentoEtichette: virtual memory, windows
Se c’è una cosa che per me (e sono certo anche per la stragrande maggioranza degli utenti) rimane un mistero è come gestisce la memoria Windows. Ora, non sono in grado di fare grandi confronti con sistemi linux, perché mentre ormai da anni sono consolidati sistemi Linux a 64 bis, MS ha scoperto l’abbondanza dei bit in tempi più recenti. Avendo avuto recentemente problemi con applicazioni Java che su windows 2003 standard edition non riuscivano ad allocare 1024MB di memoria ho deciso di approfondire un po’ il tema e raccogliere un po’ di informazioni in un post che rimarrà più come storia che di effettiva utilità.
Il caso concreto che mi sono trovato ad affrontare è stato fare funzionare Oracle BI versione 10g per dei test. Questa versione di Oracle BI è certificata al massimo su Windows 2003, peccato al primo tentativo di accesso alla console di amministrazione, gestita dall’application server OC4J installato su una macchina win2003 io abbia avuto un errore per l’impossibilità da parte di Java di allocare memoria. Gli script di avvio di OC4J per default contengono le opzioni
-XX:MaxPermSize=128m -Xmx512m
Ho provato allora a modificare tali impostazioni impostando
-XX:MaxPermSize=128m -Xmx1024m
Ma questo è risultato provocare un errore gia in avvio di OC4J.
Una veloce ricerca sul Web mi ha portato a questo interessante post che da un metodo per verificare quanta memoria al massimo è in grado di allocare Java. Ho potuto fare così test interessanti su varie macchine, verificando che effettivamente su altre macchine win2003 il comando di test fallisce:
C:\Documents and Settings\utente>java -mx768m -XX:MaxPermSize=128m -version Error occurred during initialization of VM Could not reserve enough space for object heap C:\Documents and Settings\utente>java -mx768m -XX:MaxPermSize=64m -version java version "1.4.2_04" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05) Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode)
In questo caso specifico la macchina ha 2GB di RAM fisica, ma dal task manager risulta usato circa 1,6 GB su 4GB di memoria virtuale.
Nei miei studi giovanili la gestione della memoria virtuale nei sistemi operativi è stata presente, fra l’altro a quei tempi simili dimensioni per la RAM erano fantascienza, però io non ho trovato la spiegazione del fatto per cui in tali condizioni il sistema operativo non è in grado di allocare meno di 1 GB di memoria.
Vincendo la mia pigrizia e la mia repulsione ho fatto ulteriori ricerche ed ho trovato questi riferimenti nella documentazione di MS, “virtual address space” e “Confronto tra le architetture della memoria a 32 a 64 bit“.
Pare che con il flag /3GB nel boot.ini di una macchina con 2,5 GB di RAM le cose migliorino, infatti sono arrivato ad allocare quasi 1,5 GB di heap per la JVM.
L’unica macchina Linux a 32 bit che sono riuscito a trovare è una macchina virtuale su cui ho ottenuto questi risultati:
[oracle@vboxm1 ~]$ java -mx2650m -version java version "1.6.0_20" Java(TM) SE Runtime Environment (build 1.6.0_20-b02) Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode) [oracle@vboxm1 ~]$ java -mx2750m -version Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine. [oracle@vboxm1 ~]$ uname -a Linux vboxm1 2.6.18-194.0.0.0.4.el5 #1 SMP Thu Apr 8 18:20:19 EDT 2010 i686 i686 i386 GNU/Linux [oracle@vboxm1 ~]$ free total used free shared buffers cached Mem: 909120 820564 88556 0 27572 656228 -/+ buffers/cache: 136764 772356 Swap: 1735012 0 1735012
Chiaramente le macchine a 64 bit (anche se non reali come gli Xeon) simili problemi non si presentano, neanche su win2008 a 64 bit.
A completamento del discorso devo dire che in passato ho avuto anche problemi con oracle database server 10gR2 su windows che in sistemi particolarmente carichi avevo frequenti errori ORA-04030
1 commento »
RSS feed dei commenti a questo articolo. TrackBack URI
Lascia un Commento
Blog su WordPress.com. | Theme: Pool by Borja Fernandez.
Voci e commenti feed.


Read Translated version of this blog
Ciao Cristian,
) l’installazione e l’esecuzione del software interessato
potrebbe anche essere, ed il condizionale è piu che mai obbligato, un problema introdotto dalla patch Microsoft KB956572; potresti verificare se è installata in un Windows 2003 e magari effettuarne (se è possibile) la disinstallazione e riprovare (dopo reboot vari
Comment by Alessandro— mercoledì 24 agosto 2011 #