Domanda

Ho scritto un programma Java per verificare la velocità di una coppia di algoritmi multithreading su diverse macchine con vari numeri di processori.

In alcune macchine, merge sort * fallisce perché richiede uno spazio considerevole mucchio di lavoro su matrici molto grandi. Posso cambiare facilmente lo spazio java mucchio me stesso prima di eseguire il programma, ma mi sento come un approccio più robusto e facile sarebbe per eseguire questa operazione all'interno del programma stesso.

C'è un modo per richiedere / ottenere più spazio heap dalla macchina virtuale nel corso di un programma Java?

Nota: capisco che ho potuto eseguire il programma con uno script come "java -Xmx1g Programma"; la mia curiosità su questo argomento è in parte accademica.

* La mia applicazione non unisce in linea. Si richiede O (n) di memoria aggiuntiva.

È stato utile?

Soluzione

Java non è stato progettare per essere in grado di gestire in modo dinamico la memoria, in questo caso "spazio java mucchio", tutto il contrario, è stato progettato al fine di alleviare il programmatore da doversi preoccupare di questo.

In breve, ho paura di dire che non c'è niente come un "malloc()" "setHeapSize(int byes)"or in Java.

In Java è in vincolo al amout di memoria disponibile per il JVM quando il programma si avvia. In termini di gestione della memoria questo è sia una benedizione e una maledizione.

Per quel tipo di allocazione dinamica della memoria si dovrebbe cercare di utilizzare implementare l'algoritmo utilizzando un linguaggio come C e / o C++ posto.

Altri suggerimenti

Per quanto ne so, non c'è modo di controllare la dimensione heap in fase di esecuzione.

Può non essere necessario se: è possibile fornire un dimensione minima e massima heap con le -Xms e -Xmx interruttori rispettivamente. (Es -Xms128m -Xmx512m) La jvm gestirà le dimensioni di heap entro questi limiti.

Il massimo non è la dimensione della memoria utilizzata, questo è dinamico in base all'utilizzo.

La dimensione heap massima dovrebbe essere il punto in cui si preferisce il programma di fallire, di uso più memoria. Non ha molto senso per cambiare questo in modo dinamico, anche academicly.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top