Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755

    OutOfMemoryError, anomalia?

    Salve, sul mio pc sto eseguendo un programma, scritto in java, per calcoli su GRANDI numeri (milioni di cifre).
    Per manipolare questi grandi numeri sto usando la classe LargeInteger di una libreria esterna (calculator o qualcosa di simile, non indirizzatemi ai BigInteger il punto non è questo)..fin qui nessun problema se non durante la determinazione di un GRANDE numero dove ottengo un "OutOfMemoryError" pur avendo settato l'heap size da linea di comando a, per esempio, 2 GB (-Xmx2048m).Voi direte embè starai occupando oltre 2 GB di RAM..e invece no perchè monitorando dal task manager il processo non supera mai i 600 MB
    E' pur vero che sul mio calcolatore ho soltanto 4 GB di RAM (SO a 64 bit quindi a parte quelli occupati da windows sono, teoricamente, tutti utilizzabili) ma sempre dal task manager durante il processo noto che la memoria fisica occupata non ha mai superato il 55% (2.2 dei 4 GB installati)..dunque dove sta l'inghippo?
    E' un problema della JVM?!ci deve essere un qualcosa dietro che io ignoro..mi sapreste illuminare?
    Ultima modifica di zipangulu; 11-01-2014 a 01:32

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da zipangulu Visualizza il messaggio
    Per manipolare questi grandi numeri sto usando la classe LargeInteger di una libreria esterna
    Questa?

    Quote Originariamente inviata da zipangulu Visualizza il messaggio
    durante la determinazione di un GRANDE numero dove ottengo un "OutOfMemoryError" pur avendo settato l'heap size da linea di comando a, per esempio, 2 GB (-Xmx2048m).
    Senza vedere il codice comunque è un po' difficile dire cosa potrebbe non essere "appropriato" e causare il problema di memoria. Potrebbe essere altro, es. il modo in cui gestisci gli oggetti in generale .....

    Innanzitutto come consiglio: non usare il task manager di Windows che peraltro non è in grado di mostrare il grafico della memoria per un singolo determinato processo. Usa jconsole, è un tool del JDK.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    No in realtà la libreria usata è http://people.cis.ksu.edu/~rhowell/calculator/

    Be' di codice non c'è molto da vedere poichè si "blocca" su una linea di codice simile:

    codice:
    LargeInteger due = new LargeInteger ("2");
    LargeInteger li = due.pow (intDiPotenzaMoltoAlta);
    Ultima modifica di zipangulu; 11-01-2014 a 14:32

  4. #4
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Innanzitutto come consiglio: non usare il task manager di Windows che peraltro non è in grado di mostrare il grafico della memoria per un singolo determinato processo. Usa jconsole, è un tool del JDK.
    o meglio ancora visualVM, sempre parte del jdk a partire dalla versione 6.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.