يوضح هذا المستند كيفية الحصول على تفريغ مكدس Java باستخدام الأمر Java jstack. هذه العملية صالحة على Windows و Linux و UNIX وأي أنظمة Tidal باستخدام Oracle Sun Java الإصدار 1.6+.
cisco يوصي أن يتلقى أنت معرفة جافا ومعرفة من نظام التشغيل على أي جافا يركض. كما سيتعين تثبيت الإصدار 1.6+ من Java JDK (مجموعة أدوات تطوير Java) على النظام.
Sun Java JRE 1.6+
Sun Java JDK 1.6+
راجع اصطلاحات تلميحات Cisco التقنية للحصول على مزيد من المعلومات حول اصطلاحات المستندات.
في بعض الأحيان، يحتاج الدعم إلى التقاط بيانات مؤشر الترابط منخفضة المستوى والتي لا تكون في السجلات الرئيسية.
من أجل التقاط عملية تفريغ مكدس Java باستخدام أداة jstack المقدمة من Oracle Sun، أكمل الخطوات التالية.
ملاحظة: يجب أن تعمل عملية Java باستخدام Sun Java 1.6+ لتشغيل الأمر jstack، ويجب تثبيت JDK على النظام. تنزيل Oracle Sun JDK من هنا .
العثور على رقم تعريف العملية على الجهاز الذي يقوم بتشغيل عملية Java.
على جهاز Windows، يمكنك إستخدام إدارة المهام للعثور على رقم تعريف العملية.
وعلى وجه التحديد، يمثل معرف العملية رقم تعريف العملية. إذا لم تكن ترى هذا العمود، فحدد عرض > أعمدة >PID (معرف العملية) لإضافته.
في نظام التشغيل UNIX/Linux، يمكنك إصدار PS-EF أمر | GREP UnixMaster للحصول على معرف العملية:
root@sunts06:/# ps -ef | grep UnixMaster root 5452 5423 0 14:43:21 pts/14 0:00 grep UnixMaster root 1868 1 0 Jun 09 ? 31:49 /usr/bin/java -DN=UnixMaster -DTI DAL_HOME=/opt/TIDAL/master/bin/.. -Xms256m -Xm root@sunts06:/#
بمجرد توفر رقم تعريف العملية الذي تحتاج إليه، انتقل إلى دليل BIN حيث يتم تثبيت Sun JDK وأصدر الأمر jstack {PID} حيث يمثل {PID} رقم تعريف العملية. سيؤدي هذا إلى طباعة معلومات مكدس Java على الشاشة.
C:\Program Files\Java\jdk1.6.0_25\bin>jstack 3724 2011-06-30 20:07:37 Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.0-b11 mixed mode): "Swing-Shell" daemon prio=6 tid=0x0000000006cce800 nid=0x1bd8 waiting on conditi on [0x000000000843f000] java.lang.Thread.State:WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000fb38ace8> (a java.util.concurrent.lock s.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(Unknown Source) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject .await(Unknown Source) at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) at java.util.concurrent.ThreadPoolExecuter.getTask(Unknown Source) at java.util.concurrent.ThreadPoolExecuter$Worker.run(Unknown Source) at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Thread-2" prio=6 tid=0x0000000006cd0800 nid=0xe6c waiting on condition [0x00000 0000833f000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method)
لإعادة توجيه معلومات المكدس إلى ملف، قم بإصدار الأمر نفسه باستخدام خيار إنشاء الملف الذي سيعمل في كل من Windows و Linux/UNIX:
jstack {PID} > [filename.out]