আমি কীভাবে .hprof ফাইলটি বিশ্লেষণ করব?


227

আমার নীচের পতাকাটি সহ একটি প্রোডাকশন সার্ভার চলছে: - XX: + HeapDumpOnOutOfMemoryError

আমাদের সার্ভারে যখন একটি গাদা ত্রুটির মুখোমুখি হয়েছিল তখন গতরাতে এটি একটি জাভা -38942.hpr ফাইল তৈরি করে file দেখা যাচ্ছে যে সিস্টেমের বিকাশকারীরা পতাকাটি সম্পর্কে জানত তবে এটি থেকে কোনও কার্যকর তথ্য পাওয়ার উপায় ছিল না।

কোন ধারনা?

উত্তর:


214

আপনি যদি কিছু মারাত্মক পোকার জন্য মোটামুটি উন্নত সরঞ্জাম চান, তবে এসিপি দ্বারা তাদেরকে অবদান রেখেছিল এক্লিপসের মেমরি বিশ্লেষক প্রকল্পটি দেখুন ।

মেমরি ফাঁস ইত্যাদির সন্ধানের জন্য আপনি যা কিছু করতে পারেন তা হ'ল মনের-মজাদারভাবে ভাল - এতে মেমরির অবজেক্টের বিরুদ্ধে সীমাবদ্ধ এসকিউএল (ওসিএল) ফর্ম চালানোও অন্তর্ভুক্ত ie

Com.yourcompany.somepackage.User থেকে টু স্ট্রিং (প্রথম নাম) নির্বাচন করুন

সম্পূর্ণ উজ্জ্বল।


17
আমি কেবল একটিগ্রাহী মেমরি বিশ্লেষকের জন্য একটি +100 যুক্ত করতে চাই। আমি বর্তমানে একটি 400 মিমি + হিপ ডাম্প ফাইলটি অনুসন্ধান করার চেষ্টা করছি এবং এটি একটি সম্পূর্ণ জেভিএম ক্র্যাশ হওয়ার আগে ফাইলটি পড়তে hat০ মিনিটেরও বেশি সময় নিয়েছিল। EMA <5 মিনিটের মধ্যে এটি খুলতে সক্ষম।
ম্যাট বি

3
এক্সিপিস মেমোরি অ্যানালাইজার ব্যবহার করে এইচপিআরএফ ফাইলগুলি খোলার সময় আমি পার্সিংয়ের ত্রুটিগুলি বজায় রেখে চলেছি (এটি বাস্তবেও ছিল যে গ্রহটির দ্বারা ডাম্পড!)। দুর্ভাগ্য .. দীর্ঘশ্বাস।
হারিয়ে_বিট 1110

3
MAT এর জন্য এখনও বেশ কিছুটা র‌্যামের প্রয়োজন হতে পারে [JHAT এর চেয়ে কম তবে এখনও বেশ কিছুটা]। আপনি যদি এমনটি ঘটতে থাকেন তবে টিপসের জন্য stackoverflow.com/questions/7254017/… দেখুন ।
রজারডপ্যাক

71

আপনি জেডিএটি , জেডিকে দিয়ে ডিফল্টরূপে সরবরাহ করা জাভা হিপ অ্যানালাইসিস সরঞ্জামটি ব্যবহার করতে পারেন । এটি কমান্ড লাইন কিন্তু মেমরি পরীক্ষা করতে আপনি ব্যবহার করেন এমন একটি ওয়েব সার্ভার / ব্রাউজার শুরু করে। সর্বাধিক ব্যবহারকারীর বান্ধব নয়, তবে কমপক্ষে এটি ইতিমধ্যে বেশিরভাগ জায়গায় ইনস্টলড রয়েছে। খুব দরকারী ভিউ হ'ল একেবারে নীচে "হিপ হিস্টগ্রাম" লিঙ্ক।

উদা: jhat -port 7401 -J-Xmx4G dump.hprof

jhat ওকিউএলকে "আজকাল" কার্যকর করতে পারে (নীচের লিঙ্কটি "ওসিএল চালানো")


7401. এরপর এই URL খোলা: int- এ টার্মিনাল "সার্ভার প্রস্তুত হয়" পোর্ট কমান্ড উপরে চলমান কনসোলে পর আপনি বার্তা পাবেন স্থানীয় হোস্ট: 7401 "আপনি ব্রাউজার উইন্ডো ইন বিশদ দেখতে পারেন"।
লক্ষ্মণ জি

35

আপনি নেটবীন্স প্রোফাইলার বা ভিজ্যুয়াল ভিএম স্ট্যান্ড-একা টুল থেকে হ্যাপওয়াকারও ব্যবহার করতে পারেন । একা দাঁড়িয়ে থাকায় ভিজুয়াল ভিএম হ'ল ঝাটের একটি ভাল বিকল্প, তবে এটি JHAT এর চেয়ে বেশি সহজ।

ভিজুয়াল ভিএম সম্পূর্ণরূপে ব্যবহার করতে আপনার জাভা 6+ প্রয়োজন।


আপনার একটি নোট যুক্ত করা উচিত যে এটি কেবল জাভা 6 এবং 7 এর জন্য।
নিক স্টিনিমেটস

আফাইক, হিপওয়ালকার এবং ভিজুয়ালভিএম এইচপিআরএফ ফাইলগুলি পড়ার জন্য জাভা 6/7 লাগবে না।
জেমস শেক

আমি কেবল এটি জাভা 5 দিয়ে লোড করার চেষ্টা করেছি এবং এটি বলেছে 'দয়া করে জাভা 6 বা 7 ব্যবহার করুন' আমি কী ভুল করছি?
নিক স্টিনিমেটস

হুম। সম্ভবত আপনাকে জাভা 6 চালাতে হবে, তবে একটি জাভা 5 এইচপিআরএফ পড়তে পারেন (সম্ভবত এটি আমি এটি কাজ করতে পেলাম)। আমি জানি আপনি জাভা 5 চলমান অ্যাপটিতে ভিজ্যুয়াল ভিএম থেকে হিপ-ডাম্প তৈরি করতে পারবেন না cannot আপডেট হবে।
জেমস শেক

জন্য বর্ণন - এছাড়াও আপনি, চাক্ষুষ জেভিএম ব্যবহার করতে পারেন জাভা SDK থেকে jvisualvm.exeJAVASDK/binফোল্ডারের
xxxvodnikxxx

11

স্রেফ গ্রহণের স্মৃতি বিশ্লেষক পান । এর চেয়ে ভাল আর কিছু নেই এবং এটি নিখরচায়।

JHAT কেবল "খেলনা অ্যাপ্লিকেশন" এর জন্য ব্যবহারযোগ্য


3
LILO দিয়ে শুরু করে BSL ডিজ্রো হাতে তৈরি করা "L33t" হ্যাকারদের মুগ্ধ করার জন্য JHAT প্রয়োজনীয়। অপেক্ষা করুন ... তারা আর কখনও জাভা ব্যবহার করবেন না। :-)
জেমস শেক

আমি মনে করি এটি আরও একটি মন্তব্য ...: \
রজারডপ্যাক


5

আপনি যদি নিজের হ্যাপডাম্পের একটি কাস্টম বিশ্লেষণ করতে চান তবে তা এখানে রয়েছে:

এই গ্রন্থাগারটি দ্রুত তবে জাভাতে আপনার বিশ্লেষণ কোডটি লিখতে হবে।

দস্তাবেজগুলি থেকে:

  • হিপ ডাম্প প্রক্রিয়া করতে ডিস্কে কোনও অস্থায়ী ফাইল তৈরি করে না
  • সরাসরি জিজেড সংকুচিত হিপ ডাম্প কাজ করতে পারে
  • হিপপথ স্বরলিপি

2

আমি ব্যক্তিগতভাবে ভিজুয়ালভিএম পছন্দ করি। ভিজুয়ালভিএম-এ আমার পছন্দের বৈশিষ্ট্যগুলির মধ্যে একটি হ্যাপ ডাম্প তুলনা। আপনি যখন হিপ ডাম্প বিশ্লেষণ করছেন তখন ক্র্যাশটি কী কারণে হয়েছে তা নির্ধারণের বিভিন্ন উপায় রয়েছে। আমি যে উপায়ে দরকারী পেয়েছি তার মধ্যে একটি হ'ল স্বাস্থ্যকর বনাম অস্বাস্থ্যকর হিপ ডাম্পের তুলনা করা।

নিম্নলিখিতগুলির জন্য নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করতে পারেন:

  1. আউটআফমিউরিওরারের একটি হ্যাপ ডাম্প পাওয়া যাক একে "oome.hprof" বলি। আপনি এটি JVM প্যারামিটার HeapDumpOnOutOfMemoryError এর মাধ্যমে পেতে পারেন।
  2. আপনার অ্যাপ্লিকেশনটির উপর নির্ভর করে অ্যাপ্লিকেশনটি পুনরায় চালু করুন এটি কোনও বড় (মিনিট / ঘন্টা) চলতে দেয়। অ্যাপ্লিকেশনটি চলমান অবস্থায় অন্য একটি হিপ ডাম্প পান। আসুন একে "স্বাস্থ্যকর.প্রাফ" বলি।
  3. আপনি এই উভয় ডাম্প ভিজুয়ালভিএম এ খুলতে এবং হিপ ডাম্প তুলনা করতে পারেন। আপনি এটি ক্লাস বা প্যাকেজ স্তরে করতে পারেন। এটি প্রায়শই আপনাকে সমস্যার দিকে নির্দেশ করতে পারে।

লিঙ্ক: https://visualvm.github.io

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.