Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 24728|Risposta: 1

[Fonte] Non sono riuscito a riservare abbastanza spazio per un heap di oggetti da 2097152KB

[Copiato link]
Pubblicato su 24/07/2017 10:43:36 | | | |
Errore: Non è stato possibile riservare abbastanza spazio per un heap di oggetti da 2097152KB

Ho avviato activemq e segnalato un errore, causato da un'allocazione eccessiva, quindi quando si alloca la memoria MQTT, bisogna determinarlo combinando la dimensione della memoria del server (usa free -g) e se JDK supporta la dimensione della memoria.

Impostazioni dei parametri JVM

Parametri principali:
-Xms: Dimensione iniziale della memoria
-Xmx: Dimensione massima della memoria
-Xmn: Dimensioni di generazione più giovane

Usa il comando Java -Xmx2047M -version per vedere se è conforme a:


Soluzione:

Start - > Pannello di controllo - > Sistema - > Impostazioni avanzate - > Variabili dell'ambiente - > Variabili di sistema

Nuova variabile:
Nome variabile: _JAVA_OPTIONS   
Valore variabile: -Xmx1G






Precedente:MySQL interroga una tabella senza un numero vuoto di record
Prossimo:La differenza tra server e client della JVM della macchina virtuale Java
 Padrone di casa| Pubblicato su 24/07/2017 10:45:37 |
Recentemente sto lavorando a un programma per Java. All'inizio ho sempre apprezzato la gestione della memoria di Java, non c'è bisogno di preoccuparsi di allocare la memoria, basta allocare, il raccoglitore dei rifiuti recupererà la memoria per te. Ora il programma è sviluppato con una grande quantità di dati e, per motivi di rapidità, caricherò tutte le informazioni in memoria, il che garantirà una risposta rapida. Continuo a contare la memoria ripetutamente, pensando alla mia quantità di dati, che dovrebbe bastare all'inizio (la mia macchina ha memoria 4G, anche se Windows riconosce 3,5G, ma dovrebbe andare bene rispetto al mio volume dati attuale).

Inaspettatamente, il programma del primo esperimento durò alcune ore e incontrò un'eccezione di Memoria Esaurita. Guardando le impostazioni della mia VM, ho impostato -Xms512M -Xmx1024M. Senza pensarci, l'ho cambiato direttamente in -Xms512M -Xmx2048M, e il risultato è stato che non sono riuscito a riservare abbastanza spazio per il mucchio di oggetti. Il programma non riesce ad alzarsi. Solo allora mi sono reso conto che c'era ancora un limite alla memoria massima originale. Ho cercato su Internet e ho trovato molti articoli che trattano questo argomento. Infine, ho trovato l'articolo più utile sul forum DEV2DEV di BEA

Qui il moderatore YuLimin ha fatto il test ed è giunto alla conclusione:

Versione JVM aziendale Client di memoria massima (mega) Server di memoria massima (mega)

DOM 1.5.x 1492 1520

SOL 1.5.5 (Linux) 2634 2660

DOM 1.4.2 1564 1564

DOM 1.4.2 (Linux) 1900 1260

IBM 1.4.2(Linux) 2047 N/A

BEA JRockit 1.5 (U3) 1909 1902

Ora JDK1.6.0_05 uso, l'ho testato. La cosa più importante nello stato client è che il mio JDK non riconosce il parametro -Server e non può testare lo stato del server. Le stime sono più o meno le stesse.

DOM 1.6.0 1442 N/a

Sembra che sia impossibile usare una grande quantità di memoria in Java. E il detto generale è che se la memoria è troppo grande, il tempo di raccolta dei rifiuti sarà lungo. Anche questo è comprensibile, generalmente raccolto quando la memoria non è sufficiente, la scansione della memoria 2G è ovviamente molto più lenta rispetto a 1G, e ci sono più oggetti di memoria, la relazione stimata è in aumento esponenziale.

Di seguito sono allegati i metodi di test e i record di test di YuLimin.

Metodo di test: Usa il comando java -XmxXXXXM -version per testare sulla riga di comando, poi aumenta gradualmente il valore di XXXX; se gira normalmente, significa che la dimensione di memoria specificata è disponibile, altrimenti verrà stampato un messaggio di errore.
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com