Προσδιορισμός διαρροών μνήμης

Αναγκαίες προϋποθέσεις:

Η διαρροή μνήμης αποτελεί σφάλμα σε λογική κατανομής δυναμικού χώρου αποθήκευσης για ένα πρόγραμμα, με αποτέλεσμα το πρόγραμμα να αποτυγχάνει να ανακτήσει μια διεγραμμένη μνήμη. Αυτό σημαίνει πως αντικείμενα που δεν χρειάζονται πλέον δεν ανακτώνται. Όταν ο αριθμός τέτοιων χρήσεων είναι απρόβλεπτα μεγάλος, ίσως να πρόκειται για διαρροή μνήμης. Μια σοβαρή διαρροή μνήμης μπορεί να οδηγήσει στην κατάρρευση της εφαρμογής επειδή δεν διαθέτει αρκετή μνήμη.

Οι διαρροές μνήμης προκαλούνται από αντικείμενα που συνεχίζουν να περιέχουν παραπομπές σε άλλα αντικείμενα και έτσι εμποδίζουν τη συλλογή απορριμάτων να ανακτήσει τα περιεχόμενα αντικείμενα.  Ο πίνακας "Παραπομπές σε αντικείμενα" μπορεί να χρησιμοποιηθεί για να βοηθήσει στον προσδιορισμό τέτοιων παραπομπών.

Εύρεση διαρροής μνήμης σε εφαρμογή

Για να προσδιορίσετε μια διαρροή μνήμης στην εφαρμογή, ακολουθήστε τα παρακάτω βήματα:

  1. Στην προοπτική "Προφίλ και αρχεία καταγραφής", επιλέξτε είτε την οντότητα παρακολούθησης ή τη ρουτίνα στην προβολή "Παρακολούθηση προφίλ". 
  2. Πατήστε με το δεξί κουμπί του ποντικιού στην "Παρακολούθηση" ή τη "Ρουτίνα" και επιλέξτε Συλλογή παραπομπών σε αντικείμενα. Θα ακολουθήσει η συλλογή των παραπομπών σε αντικείμενα.
  3. Πατήστε ξανά με το δεξί κουμπί του ποντικιού και επιλέξτε Άνοιγμα με > Παραπομπή σε αντικείμενο.  Ανοίγει ο πίνακας "Παραπομπές σε αντικείμενα".
  4. Επιλέξτε το εικονίδιο τοπικού μενού  ένα κουμπί με τριγωνικό εικονίδιο και επιλέξτε Εμφάνιση παραπομπής σε.
  5. Εξετάστε τη λίστα αντικειμένων και τον αριθμό παραπομπών σε αυτές.  Εκείνα που έχουν παραπομπές αποτελούν πιθανά προβλήματα διαρροής μνήμης. 

Εύρεση διαρροής μνήμης σε λειτουργία συναλλαγής

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

  1. Στην προοπτική "Προφίλ και αρχεία καταγραφής", επιλέξτε είτε την οντότητα παρακολούθησης ή τη ρουτίνα στην προβολή "Παρακολούθηση προφίλ". 
  2. Συλλέξτε παραπομπές σε αντικείμενα πριν τη συγκεκριμένη λειτουργία. Πατήστε με το δεξί κουμπί του ποντικιού και επιλέξτε Συλλογή παραπομπών σε αντικείμενα. Θα ακολουθήσει η συλλογή των παραπομπών σε αντικείμενα.
  3. Πατήστε με το δεξί κουμπί στην οντότητα παρακολούθησης και επιλέξτε Άνοιγμα με > Παραπομπή σε . Εξετάστε τον πίνακα "Παραπομπές σε αντικείμενα" και σημειώστε τις παραπομπές που δημιουργήθηκαν.
  4. Εκτελέστε τη λειτουργία που θέλετε να εξετάσετε.
  5. Συλλέξτε παραπομπές σε αντικείμενα μετά την ολοκλήρωση της λειτουργίας. Πατήστε ξανά με το δεξί κουμπί του ποντικιού και επιλέξτε Συλλογή παραπομπών σε αντικείμενα.
  6. Πατήστε με το δεξί κουμπί στην οντότητα παρακολούθησης και επιλέξτε Άνοιγμα με > Παραπομπή σε . Εξετάστε τον πίνακα "Παραπομπές σε αντικείμενα" και σημειώστε τις παραπομπές που δημιουργήθηκαν.
  7. Για να εξετάσετε τις παραπομπές σε ένα συγκεκριμένο αντικείμενο, ακολουθήστε τα παρακάτω βήματα:
    1. Από το αναπτυσσόμενο μενού στον πίνακα "Παραπομπές σε αντικείμενα", επιλέξτε Εμφάνιση παραπομπής από.
    2. Επιλέξτε την κλάση αντικειμένων και στη συνέχεια επεκτείνετε το στοιχείο.
    3. Προσδιορίστε τις παραπομπές που εμποδίζουν την ανάκτηση των νέων αντικειμένων.

 

Σχετικές έννοιες
Επισκόπηση του εργαλείου δημιουργίας προφίλ
Πόροι προφίλ
Πίνακας παραπομπών σε αντικείμενα

Σχετικές εργασίες
Δημιουργία προφίλ εφαρμογής
Εκκίνηση ή σύνδεση διεργασίας Java