Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 24728|Απάντηση: 1

[Πηγή] Δεν ήταν δυνατή η κράτηση αρκετού χώρου για σωρό αντικειμένων 2097152KB

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 24/7/2017 10:43:36 π.μ. | | | |
Σφάλμα: Δεν ήταν δυνατή η δέσμευση αρκετού χώρου για το σωρό αντικειμένων 2097152KB

Ξεκίνησα το activemq και ανέφερα ένα σφάλμα, το οποίο προκλήθηκε από υπερβολική εκχώρηση, επομένως κατά την εκχώρηση μνήμης MQTT, πρέπει να προσδιοριστεί συνδυάζοντας το μέγεθος της μνήμης του διακομιστή (χρησιμοποιήστε το free -g) και εάν το JDK υποστηρίζει το μέγεθος της μνήμης.

Ρυθμίσεις παραμέτρων JVM

Βασικές παράμετροι:
-Xms: Αρχικό μέγεθος μνήμης
-Xmx: Μέγιστο μέγεθος μνήμης
-Xmn: Μέγεθος νεότερης γενιάς

Χρησιμοποιήστε την εντολή Java -Xmx2047M -version για να δείτε αν συμμορφώνεται:


Λύση:

Έναρξη - Πίνακας Ελέγχου > - Σύστημα > - > Ρυθμίσεις για προχωρημένους - Μεταβλητές περιβάλλοντος > - Μεταβλητές συστήματος >

Νέα μεταβλητή:
Όνομα μεταβλητής: _JAVA_OPTIONS   
Μεταβλητή τιμή: -Xmx1G






Προηγούμενος:Η MySQL υποβάλλει ερώτημα σε έναν πίνακα χωρίς κενό αριθμό εγγραφών
Επόμενος:Η διαφορά μεταξύ διακομιστή και πελάτη της εικονικής μηχανής JVM της Java
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 24/7/2017 10:45:37 π.μ. |
Πρόσφατα εργάζομαι σε ένα πρόγραμμα για Java. Αρχικά, πάντα μου άρεσε η διαχείριση μνήμης της Java, δεν χρειάζεται να ανησυχείτε για την εκχώρηση μνήμης, απλώς εκχωρήστε, ο συλλέκτης σκουπιδιών θα ανακτήσει τη μνήμη για εσάς. Τώρα το πρόγραμμα έχει αναπτυχθεί με μεγάλο όγκο δεδομένων και για λόγους ταχύτητας, θα φορτώσω όλες τις πληροφορίες στη μνήμη, κάτι που θα εξασφαλίσει γρήγορη απόκριση. Εξακολουθώ να μετράω επανειλημμένα τη μνήμη, σκέφτομαι τη δική μου ποσότητα δεδομένων, η οποία θα πρέπει να είναι αρκετή στην αρχή (το μηχάνημά μου έχει μνήμη 4G, αν και τα Windows αναγνωρίζουν 3.5G, αλλά θα πρέπει να είναι εντάξει σε σύγκριση με τον τρέχοντα όγκο δεδομένων μου).

Απροσδόκητα, το πρόγραμμα του πρώτου πειράματος διήρκεσε λίγες ώρες και συνάντησε μια εξαίρεση εκτός μνήμης. Κοιτάζοντας τις δικές μου ρυθμίσεις VM, έβαλα -Xms512M -Xmx1024M. Χωρίς να το σκεφτώ, το άλλαξα απευθείας σε -Xms512M -Xmx2048M και το αποτέλεσμα ήταν ότι δεν μπορούσα να κρατήσω αρκετό χώρο για σωρό αντικειμένων. Το πρόγραμμα δεν μπορεί να σηκωθεί. Μόνο τότε συνειδητοποίησα ότι υπήρχε ακόμα ένα όριο στην αρχική μέγιστη μνήμη. Έψαξα στο Διαδίκτυο και βρήκα πολλά άρθρα που συζητούσαν αυτό το θέμα. Τέλος, βρήκα το πιο χρήσιμο άρθρο στο DEV2DEV forum του BEA

Εδώ ο συντονιστής YuLimin έκανε το τεστ και κατέληξε στο συμπέρασμα:

Έκδοση JVM εταιρείας Πελάτης μέγιστης μνήμης (mega) Διακομιστής μέγιστης μνήμης (mega)

ΚΥΡ 1.5.x 1492 1520

SUN 1.5.5 (Linux) 2634 2660

ΚΥΡ 1.4.2 1564 1564

SUN 1.4.2 (Linux) 1900 1260

IBM 1.4.2 (Linux) 2047 Δ/Υ

BEA JRockit 1.5 (U3) 1909 1902

Χρησιμοποιώ JDK1.6.0_05 τώρα, το δοκίμασα. Το μεγαλύτερο πράγμα στην κατάσταση πελάτη είναι ότι το JDK μου δεν αναγνωρίζει την παράμετρο -Server και δεν μπορεί να ελέγξει την κατάσταση διακομιστή. Οι εκτιμήσεις είναι περίπου οι ίδιες.

SUN 1.6.0 1442 Α/α

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

Παρακάτω επισυνάπτονται οι μέθοδοι δοκιμών και τα αρχεία δοκιμών της YuLimin.

Μέθοδος δοκιμής: Χρησιμοποιήστε την εντολή java -XmxXXXXM -version για δοκιμή στη γραμμή εντολών και, στη συνέχεια, αυξήστε σταδιακά την τιμή του XXXX, εάν εκτελείται κανονικά, σημαίνει ότι το καθορισμένο μέγεθος μνήμης είναι διαθέσιμο, διαφορετικά θα εκτυπωθεί ένα μήνυμα σφάλματος.
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com