"Error occurred during initialization of VM; Could not reserve enough space for object heap" χρησιμοποιώντας -Xmx3G

Πρώτα απ' όλα, έχω ένα κουτί με 8gb ram, οπότε αμφιβάλλω αν το πρόβλημα είναι η συνολική μνήμη. Αυτή η εφαρμογή τρέχει μια χαρά σε μηχανήματα με 6gb ή λιγότερο.

Προσπαθώ να δεσμεύσω 3GB χώρου χρησιμοποιώντας το -Xmx3G στην ενότητα "VM Arguments" στο Run Configurations στο Eclipse.

Κάθε φορά που προσπαθώ να κρατήσω περισσότερο από 1500mb, λαμβάνω αυτό το σφάλμα: "Error occurred during initialization of VM; Could not reserve enough space for object heap" χρησιμοποιώντας -Xmx3G

Τι συμβαίνει εδώ;

Θα μπορούσε να είναι ότι χρησιμοποιείτε ένα 32-bit jvm σε αυτό το μηχάνημα;

Σχόλια (8)

Αυτό στην πραγματικότητα δεν είναι ένα θέμα που αφορά το Eclipse. Java-on-Windows. Είναι εξαιτίας του τρόπου με τον οποίο η JVM κατανέμει μνήμη σε επιμένει να κατανέμει ένα συνεχόμενο κομμάτι μνήμης, το οποίο συχνά τα Windows δεν μπορούν να παρέχουν, ακόμη και αν υπάρχουν αρκετά ξεχωριστά κομμάτια για να ικανοποιήσουν το αίτημα κατανομής. Υπάρχουν βοηθητικά προγράμματα που θα προσπαθήσουν να βοηθήσουν τα Windows να "ανασυγκροτήσουν" τη μνήμη τους, το οποίο, θεωρητικά, θα βοηθούσε αυτή την κατάσταση, αλλά δεν έχω δοκιμάσει πραγματικά δεν τα έχω δοκιμάσει πραγματικά και δεν μπορώ να μιλήσω για την αποτελεσματικότητά τους. Ένα πράγμα που έχω ακούσει μερικές φορές ότι μπορεί να βοηθήσει είναι η επανεκκίνηση των Windows και, πριν ξεκινήσετε άλλες εφαρμογές, να εκκινήσετε την εφαρμογή Java που χρειάζεται το μεγάλο κομμάτι μνήμης. Αν είστε τυχεροί, τα Windows δεν θα έχουν κατακερματίσει την χώρο μνήμης ακόμα και η Java θα πάρει το συνεχόμενο μπλοκ που ζητάει.

Κάπου στο διαδίκτυο υπάρχουν περισσότερες τεχνικές εξηγήσεις και αναλύσεις αυτού του θέματος, αλλά δεν έχω κάποια αναφορά πρόχειρη.

Βρήκα όμως αυτό, το οποίο φαίνεται χρήσιμο: https://stackoverflow.com/a/497757/639520

Σχόλια (1)

Βεβαιωθείτε ότι το Eclipse εκτελεί πραγματικά το ίδιο JVM που νομίζετε ότι εκτελεί. Αν χρησιμοποιείτε ποτέ java στο πρόγραμμα περιήγησης ιστού, πιθανότατα έχετε επίσης μια έκδοση 32-bit που κυκλοφορεί και η οποία μπορεί να υπερισχύει, αν εγκαταστάθηκε ή ενημερώθηκε πρόσφατα.

Για να είστε απολύτως σίγουροι, σας συνιστώ να προσθέσετε αυτές τις δύο γραμμές στο αρχείο eclipse.ini στην κορυφή:

-vm 
C:/Java/jdk1.6.0_27/bin

...όπου στο μηχάνημά μου C:/Java/jdk1.6.0_27/bin όπου βρίσκεται η JVM που ξέρω ότι είναι 64-bit. Βεβαιωθείτε ότι ο φάκελος bin βρίσκεται εκεί.

(Ως μπόνους, στα Windows 7, αυτό σας επιτρέπει επίσης να "καρφιτσώσετε την καρτέλα" που είναι ο λόγος για τον οποίο έπρεπε να το κάνω αυτό για τη δική μου χρήση)

Σχόλια (5)