المحتويات

المقدمة

المتطلبات الأساسية

المتطلبات

المكونات المستخدمة

الاصطلاحات

المشكلة

الحل

معلومات ذات صلة

المقدمة

يوضح هذا المستند كيفية الحصول على تفريغ مكدس 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 من هنا .

1. العثور على رقم تعريف العملية على الجهاز الذي يقوم بتشغيل عملية 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:/#

2. بمجرد توفر رقم تعريف العملية الذي تحتاج إليه، انتقل إلى دليل 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)

3. لإعادة توجيه معلومات المكدس إلى ملف، قم بإصدار الأمر نفسه باستخدام خيار إنشاء الملف الذي سيعمل في كل من Windows و Linux/UNIX:

jstack {PID} > [filename.out]

معلومات ذات صلة

- الدعم التقني والمستندات - Cisco Systems