Πρώτα απ' όλα, έχω ένα κουτί με 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
Τι συμβαίνει εδώ;
Αυτό στην πραγματικότητα δεν είναι ένα θέμα που αφορά το Eclipse. Java-on-Windows. Είναι εξαιτίας του τρόπου με τον οποίο η JVM κατανέμει μνήμη σε επιμένει να κατανέμει ένα συνεχόμενο κομμάτι μνήμης, το οποίο συχνά τα Windows δεν μπορούν να παρέχουν, ακόμη και αν υπάρχουν αρκετά ξεχωριστά κομμάτια για να ικανοποιήσουν το αίτημα κατανομής. Υπάρχουν βοηθητικά προγράμματα που θα προσπαθήσουν να βοηθήσουν τα Windows να "ανασυγκροτήσουν" τη μνήμη τους, το οποίο, θεωρητικά, θα βοηθούσε αυτή την κατάσταση, αλλά δεν έχω δοκιμάσει πραγματικά δεν τα έχω δοκιμάσει πραγματικά και δεν μπορώ να μιλήσω για την αποτελεσματικότητά τους. Ένα πράγμα που έχω ακούσει μερικές φορές ότι μπορεί να βοηθήσει είναι η επανεκκίνηση των Windows και, πριν ξεκινήσετε άλλες εφαρμογές, να εκκινήσετε την εφαρμογή Java που χρειάζεται το μεγάλο κομμάτι μνήμης. Αν είστε τυχεροί, τα Windows δεν θα έχουν κατακερματίσει την χώρο μνήμης ακόμα και η Java θα πάρει το συνεχόμενο μπλοκ που ζητάει.
Κάπου στο διαδίκτυο υπάρχουν περισσότερες τεχνικές εξηγήσεις και αναλύσεις αυτού του θέματος, αλλά δεν έχω κάποια αναφορά πρόχειρη.
Βρήκα όμως αυτό, το οποίο φαίνεται χρήσιμο: https://stackoverflow.com/a/497757/639520
Βεβαιωθείτε ότι το 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, αυτό σας επιτρέπει επίσης να "καρφιτσώσετε την καρτέλα" που είναι ο λόγος για τον οποίο έπρεπε να το κάνω αυτό για τη δική μου χρήση)