كيف يمكنني الاتصال جافا أداة سطر الأوامر مع YourKit جافا التعريف?

StackOverflow https://stackoverflow.com/questions/2563777

سؤال

لقد بناء أداة سطر الأوامر في جاوة التي أود الآن أن الشخصية مع YourKit.إطلاق أداة سطر الأوامر مع شيء من هذا القبيل:

$ java -classpath .:foo.bar.jar com.foobar.tools.TheTool arg1 arg2 arg3

فإنه يعمل على الانتهاء في أقل من 2 ثانية.

بعد القراءة http://www.yourkit.com/docs/80/help/agent.jsp, حاولت التالية:

$ java -agentpath:/home/dspitzer/yjp-8.0.24/bin/linux-x86-32/libyjpagent.so -classpath .:foo.bar.jar com.foobar.tools.TheTool arg1 arg2 arg3

وأنا الحصول على:

[YourKit Java Profiler 8.0.24] JVMTI version 3001016d; 14.3-b01; Sun Microsystems Inc.; mixed mode, sharing; Linux; 32-bit JVM
[YourKit Java Profiler 8.0.24] Profiler agent is listening on port 10001...
[YourKit Java Profiler 8.0.24] *** HINT ***: To get profiling results, connect to the application from the profiler UI
...

(ثم تشغيل الأداة على الانتهاء و المخارج.)

أعتقد (افتراضيا على الأقل) YourKit يهدف إلى الاتصال فقط تشغيل التطبيق.

كيف يمكنني تعديل بلدي أداة سطر الأوامر تسمح اتصال من YourKit?

  1. يمكنني إضافة خيار سطر الأوامر التي سيكون لها وقفة المدخلات ، و لن اضغط على العودة إلى تستمر حتى لقد لأنها مرتبطة من YourKit.
  2. هل هناك YourKit API التي لا يمكن أن إضافة إلى أداة من شأنها أن تتسبب في ذلك إلى كتلة حتى كنت على اتصال مع YourKit?
  3. هل هناك YourKit API أو جافا خيار سطر الأوامر التي من شأنها أن إنشاء التنميط "لقطة" هذا أنا يمكن تحميل وتحليلها في وقت لاحق (بعد أداة سطر الأوامر أكملت) مع YourKit?
هل كانت مفيدة؟

المحلول

لا توجد وسيلة لإيقاف لمحة عن التطبيق حتى التعريف "يربط";كنت ببساطة لا تحتاج إلى القيام بذلك.

بدلا من ذلك ، الرجاء القيام بما يلي:

  • بدوره على المطلوب التنميط وسائط من بدء التشغيل.على سبيل المثال ، إذا كنت تحتاج إلى تعريف وحدة المعالجة المركزية ، تبدأ إما وحدة المعالجة المركزية العينات أو وحدة المعالجة المركزية تتبع مع ما يقابلها من خيارات بدء التشغيل "العينة" أو "تتبع".انظر http://www.yourkit.com/docs/80/help/additional_agent_options.jsp

  • إذا لمحة التطبيق تشغيل القصير ، تمكين لقطة القبض على الخروج مع "onexit=لقطة" خيار بدء التشغيل.فتح في وقت لاحق القبض على اللقطة في التعريف واجهة المستخدم للتحليل.

نصائح أخرى

أنا لست على بينة من YourKit الخيار للقيام بذلك (وهذا لا يعني أنه لا يوجد واحد) ، ولكن هناك هو Java عن بعد التصحيح الخيار للقيام بذلك.

حاول إضافة التالية إلى سطر الأوامر الخاص بك ، بالإضافة إلى YourKit وكيل خيارات:

-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y

هذا يجب أن يسبب VM تعليق حالما يبدأ في انتظار المصحح الاتصال على المنفذ 8000.YourKit نفسها ليس المصحح ، ولكن IDE مثل الكسوف أو Netbean سيتم القيام بهذه المهمة ، كما سيتم الأساسية مجلس الدفاع المشترك سطر الأوامر.

لذا تشغيل الأمر مع كل تعيين خيارات الاتصال YourKit ، ثم استخدام مصحح أخطاء للاتصال منفذ تصحيح الأخطاء التي تؤدي إلى VM لمتابعة التنفيذ ، مما يسمح YourKit الحصول على البيانات التي تحتاجها.

سيكون من الأفضل أن تفعل هذا باستخدام YourKit, ولكن أنا لا أعرف أي من هذه الوسائل.

هل يمكن إطلاقه عبر الكسوف ، والتي لديها YourKit المساعد التي تطلق على إطلاق التطبيق.

YourKit هو onexit=لقطة الخيار يحفظ ملف لقطة تحت $HOME/لقطات على JVM الخروج.يمكنك تحميل هذه اللقطة في YourKit واجهة المستخدم الرسومية لتحليلها لاحقا.انظر هذه الصفحة على موقعه على الانترنت لمزيد من التفاصيل.

جواب رقم 3 نعم ، هناك API يمكنك استخدام لدينا التطبيق الخاص بك تنتج التنميط النتائج التي YourKit يمكن بعد ذلك النظر.

نلقي نظرة على API مستندات, و أيضا أداة سطر الأوامر للتحكم التنميط

هنا مثال على استخدام API (لقد جربت هذا الكود):

Controller ykController = new Controller();
ykController.enableStackTelemetry();
ykController.enableExceptionTelemetry();
ykController.startCPUProfiling(ProfilingModes.CPU_TRACING,Controller.DEFAULT_FILTERS);
ykController.startAllocationRecording(false,0,false,0);
YourMainClass.main(args);
String snapshotLocation = ykController.captureMemorySnapshot();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top