heaptrack - محترف ذاكرة Heap لـ Linux
heaptrack (من قبل KDE) هو محترف ذاكرة heap لـ Linux. يتتبع جميع تخصيصات الذاكرة وعلق كل واحد بتتبع مكدس لذا يمكنك العثور على تسريب وتخصيص الاختناقات والتخصيص المؤقت المفرط واستخدام ذروة الذاكرة. يسجل ملف بيانات أثناء تشغيل برنامجك ثم يحللها إما مع heaptrack_gui (رسوم بيانية لهبية غنية وجداول) أو heaptrack_print (سطر أوامس). الحمل الزائد منخفض بما يكفي للأحمال الواقعية.
التثبيت
| النظام الأساسي | الأمر |
|---|
| Debian/Ubuntu | sudo apt install heaptrack heaptrack-gui |
| Fedora | sudo dnf install heaptrack heaptrack-gui |
| Arch Linux | sudo pacman -S heaptrack heaptrack-qt |
| من المصدر | البناء من KDE/heaptrack repo (CMake) |
| التحقق | heaptrack --version |
التسجيل
| الأمر | الوصف |
|---|
heaptrack ./my-program args | ملف تعريفي أمر من البداية |
heaptrack -p PID | الإرفاق بعملية قيد التشغيل (GDB-based) |
heaptrack -o out.zst ./prog | الكتابة إلى ملف إخراج محدد |
| الإخراج | ينشئ heaptrack.PROG.PID.zst في ديرت الحالي |
عند الخروج يطبع heaptrack ملخصاً ومسار ملف البيانات المسجلة.
التحليل (واجهة رسومية)
heaptrack_gui heaptrack.my-program.12345.zst
| عرض واجهة رسومية | يعرض |
|---|
| ملخص | Peak RSS والتخصيصات الإجمالية وكمية تسريب البايت |
| الرسم البياني اللهب | التخصيصات منسوبة لاستدعاء المكدسات |
| من أعلى إلى أسفل / من الأسفل إلى الأعلى | استدعاء شجرة التخصيص |
| المتصل/المستقبل | التنقل في علاقات التخصيص |
| الجداول | التخصيصات/التسريب/المؤقت بمرور الوقت |
التحليل (CLI)
# طباعة نقاط الاختناق في التخصيص العلوية إلى المحطة الطرفية
heaptrack_print heaptrack.my-program.12345.zst | less
| متري | المعنى |
|---|
| peak | الحد الأقصى من ذاكرة heap المحتفظ بها في وقت واحد |
| leaked | الذاكرة المخصصة ولكن لم تُحرر أبداً |
| allocations | إجمالي عدد التخصيصات (الاضطراب) |
| temporary | التخصيصات المحررة على الفور تقريباً (الهدر) |
| الخيار | الوصف |
|---|
-a, --print-peak | الفرز حسب مستهلكي الذاكرة الذروة |
-l, --print-leaks | إظهار التسريب |
-t, --print-temporary | إظهار نقاط الاختناق في التخصيص المؤقت |
-d, --diff FILE | Diff تسجيلين |
مقارنة المدير (Diff)
# انظر ماذا تغير بين البنى/التشغيل
heaptrack_print -d before.zst after.zst
ما يخبرك كل متري
| الأعراض | ابحث عن |
|---|
| عملية RSS تستمر في الزيادة | leaked — التخصيصات لم تحرر أبداً |
| تكلفة مخصص CPU عالية | allocations / temporary — الكثير من الاضطراب |
| OOM تحت الحمل | peak — تقليل الذاكرة المتزامنة الأقصى |
| ذروة ذاكرة البدء | الرسم البياني اللهب في نطاق الوقت ذي الصلة |
سير العمل الشائع
# العثور على تسرب في خدمة
heaptrack ./myservice --run-workload
heaptrack_print -l heaptrack.myservice.*.zst | head -30
# نسب ذروة الذاكرة أثناء عملية ثقيلة (واجهة رسومية الأسهل)
heaptrack ./batch-job
heaptrack_gui heaptrack.batch-job.*.zst # افحص رسم البياني اللهب "الذروة"
# تقليل الاضطراب التخصيص المؤقت في حلقة ساخنة
heaptrack_print -t heaptrack.*.zst | head
heaptrack مقابل أدوات الذاكرة الأخرى
| الجانب | heaptrack | Valgrind (massif/memcheck) | المخصصين المدمجين |
|---|
| الحمل الزائد | منخفض | عالي (memcheck جداً عالي) | يختلف |
| كشف التسريب | نعم | نعم (memcheck) | جزئي |
| الاضطراب التخصيص | نعم (مؤقت) | massif يركز على الذروة | لا |
| واجهة المستخدم | GUI غنية + CLI | نص / massif-visualizer | لا شيء |
| الأفضل لـ | profiling heap سريع على التشغيل الواقعي | فحوصات صحة عمقية | فحوصات سريعة |
موارد