একটি জাভা মেমরি ফাঁস কিভাবে খুঁজে পাবেন to


142

আপনি জাভাতে (উদাহরণস্বরূপ, জেহ্যাট) মেমরি ফাঁস কীভাবে পাবেন? আমি বেসিক চেহারা নিতে জেহাতে হিপ ডাম্প লোড করার চেষ্টা করেছি। তবে আমি বুঝতে পারি না যে কীভাবে আমার কাছে মূল রেফারেন্স ( রেফ ) পাওয়া যাবে বা যা বলা হয় তা সন্ধান করতে সক্ষম হব । মূলত, আমি বলতে পারি যে এখানে কয়েকশ মেগাবাইট হ্যাশ টেবিল এন্ট্রি রয়েছে ([java.util.HashMap ry এন্ট্রি বা এর মতো কিছু)) তবে মানচিত্রগুলি সমস্ত জায়গাতেই ব্যবহৃত হয় ... বড় মানচিত্রের সন্ধান করার কোনও উপায় আছে কি? , বা সম্ভবত বড় বস্তু গাছের মূল শিকড় খুঁজে?

[সম্পাদনা] ঠিক আছে, আমি এখন পর্যন্ত উত্তরগুলি পড়েছি তবে কেবলমাত্র আমি বলি যে আমি একটি সস্তা জারজগার (যার অর্থ আমি জেহাট কীভাবে ব্যবহার করতে পারি জেপি প্রফিলারের জন্য অর্থ প্রদানের চেয়ে বেশি আগ্রহী)। এছাড়াও, জেহাট সর্বদা উপলভ্য যেহেতু এটি জেডিকে অংশ part অবশ্যই না জেহাতকে দিয়ে কিন্তু নিষ্ঠুর বাহিনীর সাথে কোনও উপায় নেই তবে আমি বিশ্বাস করতে পারি না যে এটি হতে পারে।

এছাড়াও, আমি মনে করি না যে আমি প্রকৃতপক্ষে সংশোধন করতে সক্ষম হব ( সমস্ত মানচিত্রের মাপের লগিং যুক্ত করা ) এবং লিকটি লক্ষ্য করার জন্য এটি যথেষ্ট দীর্ঘকাল ধরে চালানো হবে।


এটি জেপ্রোফিলারের জন্য অন্য একটি "ভোট"। এটি গাদা বিশ্লেষণের জন্য বেশ ভাল কাজ করে, একটি শালীন ইউআই রয়েছে এবং বেশ ভালভাবে কাজ করে। ম্যাককেঞ্জিজি 1 যেমন বলেছে যে, আপনি অন্যথায় এই ফাঁসের উত্স সন্ধানে যতটা সময় পোড়াবেন তার চেয়ে 500 ডলার কম। সরঞ্জামের দাম যতদূর যায়, এটি খারাপ নয়।
জোয়েভ

ওরাকলের এখানে একটি প্রাসঙ্গিক পৃষ্ঠা রয়েছে: ডকস.ওরাকল.com
লরেল

উত্তর:


126

আমি জাভাতে মেমরি ফাঁস খুঁজে পেতে নিম্নলিখিত পদ্ধতির ব্যবহার করি। আমি দুর্দান্ত সাফল্যের সাথে জেপ্রোফিলার ব্যবহার করেছি, তবে আমি বিশ্বাস করি যে গ্রাফিং ক্ষমতা সহ কোনও বিশেষ সরঞ্জাম (গ্রাফিকাল আকারে বিশ্লেষণ করা আরও সহজ) কাজ করবে।

  1. অ্যাপ্লিকেশনটি শুরু করুন এবং এটি "স্থিতিশীল" অবস্থায় না আসা পর্যন্ত অপেক্ষা করুন, যখন সমস্ত সূচনা সম্পন্ন হয় এবং অ্যাপ্লিকেশনটি নিষ্ক্রিয় থাকে।
  2. কোনও ক্যাশে, ডিবি-সম্পর্কিত সূচনা করার অনুমতি দেওয়ার জন্য একাধিকবার মেমরি ফুটো হওয়ার সন্দেহজনকভাবে অপারেশন চালান।
  3. জিসি চালান এবং মেমরি স্ন্যাপশট নিন।
  4. আবার অপারেশন চালান। প্রক্রিয়াজাতকরণের অপারেশন এবং ডেটা আকারের জটিলতার উপর নির্ভর করে বেশ কয়েকটি থেকে বহুবার চালানো হতে পারে।
  5. জিসি চালান এবং মেমরি স্ন্যাপশট নিন।
  6. 2 টি স্ন্যাপশটের জন্য একটি ডিফ চালান এবং এটি বিশ্লেষণ করুন।

মূলত বিশ্লেষণটি সর্ববৃহৎ ধনাত্মক পার্থক্যের থেকে শুরু করে বলা উচিত, অবজেক্টের ধরণগুলি দ্বারা অনুসন্ধান করা উচিত এবং কী কারণে এই অতিরিক্ত বস্তুগুলিকে স্মৃতিতে আটকে রাখে।

ওয়েব অ্যাপ্লিকেশনগুলির জন্য যা বিভিন্ন থ্রেড বিশ্লেষণে অনুরোধগুলি প্রক্রিয়াকরণ আরও জটিল হয়ে ওঠে তবে তবুও সাধারণ পদ্ধতির প্রয়োগ এখনও হয়।

আমি অ্যাপ্লিকেশনগুলির মেমরির পদচিহ্নগুলি হ্রাস করার লক্ষ্যে বেশ কয়েকটি প্রকল্পগুলি করেছি এবং কিছু সাধারণ অ্যাপ্লিকেশন সুনির্দিষ্ট টুইট এবং কৌশলটি সর্বদা ভালভাবে কাজ করেছিল general


7
বেশিরভাগ (সমস্ত না থাকলে) জাভা প্রোফাইলাররা আপনাকে একটি বোতামের একটি ক্লিকে জিসিকে ডাকার বিকল্প সরবরাহ করে। অথবা আপনি আপনার কোডের উপযুক্ত জায়গা থেকে System.gc () কল করতে পারেন।
দিমা মালেঙ্কো

3
এমনকি আমরা যদি System.gc () কল করি তবে JVM কলটিকে অবহেলা করা বেছে নিতে পারে। আফাইক এটি জেভিএম নির্দিষ্ট। উত্তর +1।
অনিকেত ঠাকুর

4
"স্মৃতি স্ন্যাপশট" আসলে কী? এমন কিছু আছে যা আমার কোডটি চালাচ্ছে এমন প্রতিটি বস্তুর সংখ্যা আমাকে বলবে?

2
আমি কীভাবে "অতিরিক্ত ধরণের জিনিসগুলি ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ছড়িয়ে পড়ে?" আমি খুব সাধারণ জিনিস দেখতে পাই যেমন ইনট [], অবজেক্ট [], স্ট্রিং ইত্যাদি they তারা কোথা থেকে এসেছে তা আমি কীভাবে খুঁজে পাব?
ভিটুইল

48

প্রশ্নকর্তা এখানে, আমি একটি সরঞ্জাম পেয়েছি যা কোনও ক্লিকের উত্তর দিতে 5 মিনিট সময় নেয় না বলে সম্ভাব্য মেমরি ফাঁস খুঁজে পাওয়া অনেক সহজ করে তোলে।

যেহেতু লোকেরা বেশ কয়েকটি সরঞ্জামের পরামর্শ দিচ্ছে (আমি কেবল ভিজ্যুয়াল ডাব্লুএম চেষ্টা করেছি যেহেতু আমি জেডিকে এবং জেপ্রোব পরীক্ষায় পেয়েছি) তবে যদিও আমার গ্রহগ্রন্থ প্ল্যাটফর্মে নির্মিত একটি মুক্ত / ওপেন উত্স সরঞ্জামের পরামর্শ দেওয়া উচিত, মেমরি বিশ্লেষক (কখনও কখনও এসএপি মেমরি হিসাবে উল্লেখ করা হয়) বিশ্লেষক) http://www.eclipse.org/mat/ এ উপলব্ধ ।

এই সরঞ্জামটি সম্পর্কে সত্যিই দুর্দান্ত যা হ'ল এটি হিপ ডাম্পকে সূচিত করে যখন আমি প্রথম এটি খোলার মাধ্যমে এটি প্রতিটি বস্তুর জন্য 5 মিনিট অপেক্ষা না করে ধরে রাখা হিপগুলির মতো ডেটা দেখানোর মঞ্জুরি দেয় (বেশিরভাগ অপারেশন আমার চেষ্টা করা অন্যান্য সরঞ্জামের চেয়ে অনেক বেশি দ্রুত ছিল) ।

আপনি যখন ডাম্পটি খোলেন, প্রথম স্ক্রিন আপনাকে সবচেয়ে বড় অবজেক্টগুলি (রক্ষিত হিপ গণনা করা) সহ একটি পাই চার্ট দেখায় এবং সান্ত্বনার জন্য যে বস্তুগুলিতে দ্রুত যায় সেগুলি দ্রুত নেভিগেট করতে পারে। এটির একটি সম্ভাব্য লিক সন্দেহ রয়েছে যা আমি পুনরায় ব্যবহার করতে পারি মনে করি, তবে যেহেতু নেভিগেশন আমার পক্ষে যথেষ্ট ছিল আমি আসলে তাতে প্রবেশ করতে পারি নি।


1
মূল্যবান লক্ষণীয়: স্পষ্টত জাভা 5 এবং এর উপরে, HeapDumpOnCtrlBreakভিএম প্যারামিটার উপলব্ধ নেই । আমি যে সমাধানটি খুঁজে পেয়েছি (এখনও অবধি এখনও সন্ধান করছে) তা হল .hprofফাইলটি ডাম্প করার জন্য জেএম্যাপ ব্যবহার করা , যা আমি পরে গ্রহনে রেখেছি এবং পরীক্ষার জন্য এমএটি ব্যবহার করি।
বেন

1
হিপ ডাম্প প্রাপ্ত করার বিষয়ে, বেশিরভাগ প্রোফাইলাররা (জেভিসুয়ালভিএম সহ) একটি ফাইলের জন্য হ্যাপ এবং থ্রেড উভয়ই ডাম্প করার বিকল্প অন্তর্ভুক্ত করে।
বিবাজা 42

13

একটি সরঞ্জাম একটি বড় সাহায্য।

যাইহোক, এমন সময় আছে যখন আপনি কোনও সরঞ্জাম ব্যবহার করতে পারবেন না: হিপ ডাম্পটি এত বিশাল যে এটি সরঞ্জামটি ক্র্যাশ করে you

সেক্ষেত্রে এটি এইচআরপি ডাম্প ফাইলের চারপাশে আপনার উপায় জানতে সহায়তা করে।

শুরু করুন সাইট সন্ধান করুন। এটি আপনাকে দেখায় যে কোন জিনিসগুলি সর্বাধিক স্মৃতি ব্যবহার করছে। তবে কেবলমাত্র টাইপ করে অবজেক্টগুলি একসাথে লম্পট করা হয় না: প্রতিটি প্রবেশে একটি "ট্রেস" আইডি অন্তর্ভুক্ত থাকে। তারপরে আপনি সেই "ট্র্যাক এনএনএনএন" অনুসন্ধান করতে পারেন যেখানে স্ট্যাকের শীর্ষস্থানীয় কয়েকটি ফ্রেম যেখানে অবজেক্ট বরাদ্দ ছিল। প্রায়শই, একবার আমি দেখি কোথায় অবজেক্টটি বরাদ্দ করা হয়েছে, আমি একটি বাগ খুঁজে পাই এবং আমার কাজ শেষ হয়ে যায়। এছাড়াও, নোট করুন যে আপনি ক্রেডিট করতে পারবেন যে কতগুলি ফ্রেম স্ট্যাকের মধ্যে রেকর্ড করা আছে - Xrunhprof অপশনগুলির সাথে।

যদি আপনি বরাদ্দ সাইটটি পরীক্ষা করে দেখেন এবং কোনও ভুল না দেখেন, অপ্রত্যাশিত রেফারেন্স চেইনটি সন্ধান করতে আপনাকে সেই কয়েকটি লাইভ অবজেক্ট থেকে রুট অবজেক্টে পশ্চাদপট শৃঙ্খলা শুরু করতে হবে। এখানেই কোনও সরঞ্জাম সত্যই সহায়তা করে তবে আপনি একই জিনিসটি হাতের সাহায্যে করতে পারেন (ভাল, গ্রেপ সহ)। এখানে কেবল একটি রুট অবজেক্ট নেই (যেমন বস্তু আবর্জনা সংগ্রহের সাপেক্ষে নয়)। থ্রেড, শ্রেণি এবং স্ট্যাক ফ্রেমগুলি রুট অবজেক্ট হিসাবে কাজ করে এবং যে কোনও বিষয় তারা দৃ strongly়তার সাথে উল্লেখ করে তা সংগ্রহযোগ্য নয়।

চেইন করতে, খারাপ ট্রেস আইডি সহ এন্ট্রিগুলির জন্য হিপ ডাম্প বিভাগটি দেখুন। এটি আপনাকে একটি ওবিজে বা এআরআর এন্ট্রিতে নিয়ে যাবে, যা হেক্সাডেসিমালে একটি অনন্য অবজেক্ট শনাক্তকারী দেখায়। এই আইডির সমস্ত উপস্থিতি অনুসন্ধান করুন যাতে কে এই বস্তুর প্রতি দৃ to় রেফারেন্স পেয়েছে। আপনি ফাঁসটি কোথায় রয়েছে তা নির্ধারণ না করা অবধি এই শাখাগুলি পিছনে ছড়িয়ে পড়ার সাথে সাথে সেগুলির প্রতিটি অনুসরণ করুন। একটি সরঞ্জাম এত সহজ কেন দেখুন?

স্ট্যাটিক সদস্যরা মেমরি ফাঁসের জন্য পুনরাবৃত্তি অপরাধী। বাস্তবে, কোনও সরঞ্জাম ছাড়াই, স্থির মানচিত্রের সদস্যদের জন্য আপনার কোডটি দেখে কয়েক মিনিট ব্যয় করা ঠিক হবে। একটি মানচিত্র বড় হতে পারে? কিছু কি কখনও তার এন্ট্রি পরিষ্কার করে?


"হিপ ডাম্পটি এত বিশাল যে এটি সরঞ্জামটি ক্র্যাশ করে” "আমি যাচাই করেছি jhatএবং MATস্পষ্টতই পুরো হিপ ডাম্পটিকে মেমরিতে লোড করার চেষ্টা করেছি এবং তাই সাধারণত OutOfMemoryErrorবড় আকারের ডাম্পগুলির সাথে একটি ক্র্যাশ হয়ে যায় (যেমন, অ্যাপ্লিকেশনগুলি যা সবচেয়ে বেশি গাদা বিশ্লেষণের প্রয়োজন হয়!) )। নেটবিন্স প্রোফাইলার রেফারেন্স সূচীকরণের জন্য একটি পৃথক অ্যালগরিদম ব্যবহার করেছে বলে মনে হচ্ছে যা বড় ডাম্পগুলিতে ধীরে ধীরে পেতে পারে তবে কমপক্ষে সরঞ্জাম এবং ক্র্যাশে সীমাহীন মেমরি গ্রাস করে না।
জেসি গ্লিক

10

বেশিরভাগ সময়, এন্টারপ্রাইজ অ্যাপ্লিকেশনগুলিতে দেওয়া জাভা হিপ সর্বোচ্চ 12 থেকে 16 জিবি আদর্শ আকারের চেয়ে বড়। নেটবিন্স প্রোফাইলারকে এই বড় জাভা অ্যাপগুলিতে সরাসরি কাজ করা আমার পক্ষে কঠিন হয়ে পড়েছে।

তবে সাধারণত এটির প্রয়োজন হয় না। আপনি "লাইভ" হিপ ডাম্প নিতে jdk সহ যে jmap ইউটিলিটিটি ব্যবহার করতে পারেন তা হ'ল জিম্যাপটি GC চালানোর পরে হিপটি ডাম্প করবে। অ্যাপ্লিকেশনটিতে কিছু অপারেশন করুন, অপারেশনটি শেষ না হওয়া পর্যন্ত অপেক্ষা করুন, তারপরে অন্য "লাইভ" হিপ ডাম্প নিন। হিপডাম্পগুলি লোড করতে, হিস্টোগ্রামের উপর বাছাই করতে, Eclipse MAT এর মতো সরঞ্জামগুলি ব্যবহার করুন দেখুন কোন জিনিসগুলি বৃদ্ধি পেয়েছে বা কোনটি সর্বোচ্চ, এটি কোনও ধারণা দেয়।

su  proceeuser
/bin/jmap -dump:live,format=b,file=/tmp/2930javaheap.hrpof 2930(pid of process)

এই পদ্ধতির সাথে কেবল একটি সমস্যা রয়েছে; লাইভ অপশন সহ বিশাল আকারের হিপ ডাম্পগুলি বিকাশের কোলে স্থানান্তরিত করতে খুব বড় হতে পারে এবং খোলার জন্য পর্যাপ্ত মেমরি / র‌্যামযুক্ত একটি মেশিনের প্রয়োজন হতে পারে।

ক্লাস হিস্টগ্রাম ছবিতে আসে যেখানে। আপনি jmap সরঞ্জাম দিয়ে একটি লাইভ ক্লাসের হিস্টোগ্রাম ডাম্প করতে পারেন। এটি কেবল মেমরির ব্যবহারের ক্লাসের হিস্টগ্রাম দেবে as সাধারণত এটিতে রেফারেন্সটি শৃঙ্খলাবদ্ধ করার তথ্য থাকবে না। উদাহরণস্বরূপ, এটি শীর্ষে চর অ্যারে রাখতে পারে। এবং স্ট্রিং ক্লাস নীচে কোথাও। আপনাকে সংযোগটি নিজেই আঁকতে হবে।

jdk/jdk1.6.0_38/bin/jmap -histo:live 60030 > /tmp/60030istolive1330.txt

দুটি হিপ ডাম্প নেওয়ার পরিবর্তে, উপরে বর্ণিত মত দুটি শ্রেণীর হিস্টোগ্রাম নিন; তারপরে ক্লাসের হিস্টোগ্রামগুলি তুলনা করুন এবং যে ক্লাসগুলি বাড়ছে তা দেখুন। আপনি নিজের অ্যাপ্লিকেশন ক্লাসের সাথে জাভা ক্লাসগুলি সম্পর্কিত করতে পারেন কিনা তা দেখুন। এটি একটি খুব ভাল ইঙ্গিত দেবে। এখানে একটি অজগর স্ক্রিপ্ট যা আপনাকে দুটি জ্যাম্যাপের হিস্টোগ্রাম ডাম্পের তুলনা করতে সহায়তা করতে পারে। histogramparser.py

অবশেষে জ্যাকনলস এবং ভিজুয়ালভিমের মতো সরঞ্জামগুলি সময়ের সাথে সাথে স্মৃতিশক্তি বৃদ্ধি পেতে এবং মেমরি ফুটো আছে কিনা তা দেখার জন্য প্রয়োজনীয়। অবশেষে কখনও কখনও আপনার সমস্যা মেমরি ফুটো হতে পারে না তবে উচ্চ মেমরির ব্যবহার হতে পারে this এর জন্য জিসি লগিং সক্ষম করুন; জি 1 জিসির মতো আরও উন্নত এবং নতুন কমপ্যাকটিং জিসি ব্যবহার করুন; এবং আপনি জিসিটের মতো জেডিকে সরঞ্জামগুলি ব্যবহার করতে পারেন জিসিটি আচরণটি সরাসরি দেখতে

jstat -gccause pid <optional time interval>

-জট, জ্যাম্যাপ, ফুল জিসি, হুমংসাস বরাদ্দ, জি 1 জিসির জন্য গুগলে অন্যান্য রেফারেন্স


1
এখানে আরও বিশদ সহ একটি ব্লগ পোস্ট যুক্ত করেছেন - alexpunnen.blogspot.in/2015/06/…
অ্যালেক্স পুন্নেন

5

এমন সরঞ্জাম রয়েছে যা আপনাকে আপনার ফাঁস খুঁজে পেতে সহায়তা করবে যেমন জেপ্রোব, থাইকিট, এডি 4 জ বা জে রকিট মিশন নিয়ন্ত্রণ। সর্বশেষটি আমি ব্যক্তিগতভাবে সবচেয়ে ভালভাবে জানি। যে কোনও ভাল সরঞ্জাম আপনাকে এমন একটি স্তরে ড্রিল করতে দেয় যেখানে আপনি সহজেই সনাক্ত করতে পারবেন কোনটি ফাঁস হয় এবং কোথায় ফাঁস হওয়া অবজেক্টগুলি বরাদ্দ করা হয়।

হ্যাশ টেবিলস, হ্যাশম্যাপস বা অনুরূপ ব্যবহার করা জাভাতে আপনি মোটামুটিভাবে মেমরি ফাঁস করতে পারেন এমন কয়েকটি উপায়গুলির মধ্যে একটি। যদি আমাকে হাত দিয়ে ফুটোটি খুঁজে পেতে হয় তবে আমি আমার হাশম্যাপসটির আকারটি ঘরের মধ্যে মুদ্রণ করব এবং সেখান থেকে আমি যেখানে আইটেম যুক্ত করব তা খুঁজে পেয়ে সেগুলি মুছতে ভুলে যাব।


4

ঠিক আছে, যখনই আপনি আপনার মানচিত্রের আকার পরিবর্তন করেন তখন লগিং যুক্ত করার নিম্ন প্রযুক্তির সমাধান সর্বদা থাকে, তারপরে লগগুলি অনুসন্ধান করুন যার জন্য মানচিত্রগুলি যুক্তিসঙ্গত আকারের চেয়ে বেশি বাড়ছে growing


1

নেটবিয়ানগুলির একটি অন্তর্নির্মিত প্রোফাইলার রয়েছে।


0

আপনার বরাদ্দগুলি ট্র্যাক করে এমন একটি মেমরি প্রোফাইলার সত্যই আপনার প্রয়োজন। জেপ্রোফিলারটি একবার দেখুন - তাদের "হিপ ওয়াকার" বৈশিষ্ট্য দুর্দান্ত, এবং জাভা আইডিইয়ের সমস্তগুলির সাথে তাদের একীকরণ রয়েছে। এটি নিখরচায় নয়, তবে এটি কোনও ব্যয়বহুলও নয় (একক লাইসেন্সের জন্য 499 ডলার) - আপনি কম পরিশীলিত সরঞ্জামগুলির সাথে একটি ফুটো সন্ধানের জন্য সংগ্রামের জন্য প্রায় 500 ডলার ব্যয় করবেন।


0

আবর্জনা সংগ্রহকারীকে একাধিকবার কল করার পরে আপনি মেমরির ব্যবহারের আকারটি পরিমাপ করে তা জানতে পারবেন:

Runtime runtime = Runtime.getRuntime();

while(true) {
    ...
    if(System.currentTimeMillis() % 4000 == 0){
        System.gc();
        float usage = (float) (runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024;
        System.out.println("Used memory: " + usage + "Mb");
    }

}

যদি আউটপুট সংখ্যা সমান হয় তবে আপনার আবেদনে কোনও মেমরি ফাঁস নেই, তবে আপনি যদি মেমরির ব্যবহারের সংখ্যা (বর্ধমান সংখ্যা) এর মধ্যে পার্থক্য দেখেন তবে আপনার প্রকল্পে মেমরি ফাঁস রয়েছে। উদাহরণ স্বরূপ:

Used memory: 14.603279Mb
Used memory: 14.737213Mb
Used memory: 14.772224Mb
Used memory: 14.802681Mb
Used memory: 14.840599Mb
Used memory: 14.900841Mb
Used memory: 14.942261Mb
Used memory: 14.976143Mb

মনে রাখবেন যে কখনও কখনও স্ট্রিম এবং সকেটের মতো কিছু ক্রিয়াকলাপ দ্বারা মেমরি প্রকাশ করতে কিছুটা সময় নেয়। প্রথম আউটপুটগুলির দ্বারা আপনার বিচার করা উচিত নয়, আপনার এটি নির্দিষ্ট সময়ের মধ্যে পরীক্ষা করা উচিত।


0

জেপ্রোফিলারের সাথে মেমরি ফাঁস পাওয়ার বিষয়ে এই স্ক্রিনের কাস্ট আউট করুন । এটি @ দিমা মালেনকো উত্তরের চাক্ষুষ ব্যাখ্যা explanation

দ্রষ্টব্য: যদিও জেপ্রোফিলার ফ্রিওয়্যার নয় তবে পরীক্ষার সংস্করণটি বর্তমান পরিস্থিতি মোকাবেলা করতে পারে।


0

যেমন আমাদের বেশিরভাগই কোডটি লেখার জন্য ইতিমধ্যে Eclipse ব্যবহার করেন, কেন Eclipse এ মেমরি অ্যানালাইজার টুল (MAT) ব্যবহার করবেন না। এটি দুর্দান্ত কাজ করে।

অন্ধকার মাদুর অন্ধকার আইডিই যা বিশ্লেষণ সরঞ্জাম উপলব্ধ জন্য প্লাগ-ইনগুলি একটি সেট heap dumpsজাভা অ্যাপ্লিকেশন থেকে এবং চিহ্নিত করতে memory problemsঅ্যাপ্লিকেশনে।

এটি বিকাশকারীকে নিম্নলিখিত বৈশিষ্ট্যগুলির সাথে মেমরি ফাঁস খুঁজে পেতে সহায়তা করে

  1. একটি স্মৃতি স্ন্যাপশট অর্জন (হিপ ডাম্প)
  2. বারলেখ
  3. গাদা ধরে রেখেছে
  4. আধিপত্য গাছ
  5. জিসি রুটগুলির পাথ অন্বেষণ করা
  6. পরিদর্শক
  7. প্রচলিত মেমরি অ্যান্টি-প্যাটার্নস
  8. বিষয়টির অনুসন্ধানের ভাষা

এখানে চিত্র বর্ণনা লিখুন

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