একটি "মেমরি লিক" এর শারীরস্থান

এনএইচটি প্রেক্ষাপটে:

  • একটি মেমরি লিক কি?
  • আপনি কিভাবে আপনার অ্যাপ্লিকেশন লিক নির্ধারণ করতে পারেন? প্রভাব কি?
  • আপনি কিভাবে মেমরি লিক প্রতিরোধ করতে পারেন?
  • যদি আপনার অ্যাপ্লিকেশনটি মেমরি লিক থাকে, তবে কি প্রক্রিয়াটি প্রবাহিত হয় বা মারা যায়? অথবা আপনার অ্যাপ্লিকেশনে মেমরি লিঙ্কে কি প্রক্রিয়া শেষ হওয়ার পরও সিস্টেমের অন্যান্য প্রক্রিয়াকে প্রভাবিত করে?
  • COM Interop এবং / অথবা P / Invoke দ্বারা অ্যাক্সেস করা অসমর্থিত কোড সম্পর্কে কি?
0
যোগ সম্পাদিত
মতামত: 6

15 উত্তর

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

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

আমিও চেষ্টা করব এবং নিম্নলিখিতগুলি নিশ্চিত করবো:

একটি) Idisposable বাস্তবায়িত হয় যে সবকিছু একটি অবশেষে ব্লক ব্যবহার করে নিষ্পত্তি করা হয় বা এই অন্তর্ভুক্ত ব্রিজ, কলম ইত্যাদি (কিছু মানুষ ছাড়াও সবকিছু কিছুই সেট করার জন্য তর্ক)

খ) বন্ধের পদ্ধতিতে যে কোনও জিনিসকে শেষ পর্যন্ত ব্যবহার করা হয় অথবা ব্যবহার করা বিবৃতিটি ব্যবহার করা হয় (যদিও আমি ব্যবহার করে খুঁজে পেয়েছি তা নির্ভর করে আপনি বস্তুটি ব্যবহার করে বিবৃতির উপর নির্ভর করে না কেন)

গ) যদি আপনি অনির্দিষ্ট কোড / উইন্ডোজ API এর ব্যবহার করছেন তবে এইগুলি সঠিকভাবে পরে নিযুক্ত করা হয়। (কিছু সম্পদ রিলিজের উপায় পরিষ্কার আছে)

আশাকরি এটা সাহায্য করবে.

0
যোগ

আমি একটি পরিচালিত পরিবেশে অনুমান, একটি লিক আপনি একটি মেমরি কাছাকাছি বড় অংশ একটি অপ্রয়োজনীয় রেফারেন্স পালন করা হবে।

0
যোগ

আমি বার্নার্ডের সাথে একমত পোষণ করবো। কীভাবে একটি ম্যাম লিক হবে।

আপনি তার মেমরি ব্যবহারের জন্য আপনার অ্যাপ্লিকেশন প্রোফাইল করতে পারে, এবং এটি তার একটি লিক আছে বলতে পারে আপনি এটি না হওয়া উচিত যখন এটি অনেক মেমরি পরিচালনার যে নির্ধারণ।

পরিচালিত পদে আমি প্রক্রিয়াকে হত্যা / সরানো একবার মুছে ফেলার কথা বলার জন্য লাইনের উপর আমার ঘাড়টি রাখব।

পরিচালিত কোডটি তার নিজের জন্তু এবং এটির মধ্যে একটি লিক বিদ্যমান থাকলে এটি একটি আদর্শ স্মৃতি অনুসরণ করবে। লিক সংজ্ঞা

0
যোগ

আমি একটি পরিচালিত পরিবেশে অনুমান, একটি   লিক আপনি একটি পালন করা হবে   একটি বড় অংশ অপ্রয়োজনীয় রেফারেন্স   প্রায় মেমরির।

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

StreamReader sr;
using(sr = new StreamReader("somefile.txt"))
{
    //do some stuff
}

এবং যদি আপনি একটি বর্গ তৈরি করেন যা অনির্দিষ্ট বস্তু ব্যবহার করছে, যদি আপনি সঠিকভাবে IDisposable বাস্তবায়িত না করে থাকেন তবে আপনার ক্লাসের ব্যবহারকারীদের জন্য আপনি মেমরির লিকের সৃষ্টি করতে পারেন।

0
যোগ

দৃঢ়ভাবে বলতে গেলে, একটি মেমরি লিক মেমরি খাচ্ছে যা প্রোগ্রাম দ্বারা "আর ব্যবহৃত হয় না"।

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

সব ক্ষেত্রে, অ্যাপ্লিকেশন কঠোরভাবে প্রয়োজন বেশী মেমরি খায়। সীমাহীন ammount উপর ভিত্তি করে প্রভাব, কোনটি থেকে যেতে পারে, অত্যধিক সংগ্রহ দ্বারা সৃষ্ট মন্দা, একটি মেমরি ব্যতিক্রম সিরিজ এবং অবশেষে বাধ্যতামূলক প্রক্রিয়া অবসান দ্বারা অনুসরণ একটি মারাত্মক ত্রুটি।

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

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

0
যোগ

আমি যে সেরা ব্যাখ্যাটি দেখেছি তা হল মুক্ত 7-এর অধ্যায় 7-এ। প্রোগ্রামিং ইবুক এর ভিত্তিগুলি

মূলত, এনএইচ তে একটি মেমরি লিক তৈরি হয় যখন রেফারেন্সেড বস্তুগুলি মূলত হয় এবং এইভাবে আবর্জনা সংগৃহীত করা যায় না। এটি ঘটেছে যখন আপনি ইচ্ছাকৃত এলাকা অতিক্রম রেফারেন্স ধরে রাখা ঘটেছে।

আপনি জানতে পারবেন যে আপনি যখন আউটফিমোমিরিস্ট এক্সপ্রেসেস শুরু করছেন বা আপনার মেমোরির ব্যবহারটি আপনি যা আশা করেন তার চেয়েও বেশি (আপনার সুন্দর মেমরির কাউন্টার) পেছনে চলেছে।

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

অবশ্যই, একটি ভাল মেমরি প্রোফাইলে আপনাকে আপনার অবজেক্ট গ্রাফ দেখতে এবং আপনার অবজেক্টের নেস্টিং / রেফারেন্সিংটি অন্বেষণ করতে হবে যাতে কোথা থেকে রেফারেন্সগুলি আসছে এবং কোন মূল বস্তুটি দায়ী ( রেড-গেট এণ্টস প্রোফাইল , জেটব্রেইন ডটমমরি, memprofiler সত্যিই ভাল পছন্দ হয়, অথবা আপনি কেবলমাত্র পাঠ্যবই উইন্ডবগ এবং sos ব্যবহার করতে পারেন, তবে আপনি যদি একজন প্রকৃত গুরু না হন তবে আমি দৃঢ়ভাবে একটি বাণিজ্যিক / ভিজুয়াল প্রোডাক্টের সুপারিশ রাখি)।

আমি বিশ্বাস করি যে পরিচালিত কোডটি আনম্যাঙ্গেড কোডের সাধারণ মেমরির লিকের সাপেক্ষে, ব্যতীত দুটি রেফারেন্সগুলি আবর্জনা সংগ্রাহক দ্বারা পরিচালিত হয়। এই শেষ বিন্দু সম্পর্কে ভুল হতে পারে

0
যোগ
@ জেফ্রি, এটি কি ঘটছে তা বর্ণনা করার একটি অসামঞ্জস্যপূর্ণ উপায় এবং আমি এটি পছন্দ করি!
যোগ লেখক Exitos, উৎস
@ কিকরিয়ু: কীভাবে বস্তুটি নিজেই স্থির করে?
যোগ লেখক Andrei Rînea, উৎস
ওহ তুমি বইটা পছন্দ করছ? আমি লেখক সময়ে সময় স্ট্যাকওভারফ্লো উপর পপ আপ দেখা করেছি।
যোগ লেখক Johnno Nolan, উৎস
কিছু এন.এ.ডি. বস্তুগুলি নিজেদেরকে জমানো এবং অকার্যকর হয়ে যায়। এই কারণে এই IDisposable যে কিছু নিষ্পত্তি করা উচিত।
যোগ লেখক kyoryu, উৎস
@ এন্ড্রিয়ি: আমি মনে করি একটি চলমান থ্রেড সম্ভবত একটি বস্তুর সেরা উদাহরণ নিজেই rooting একটি বস্তু যা একটি স্ট্যাটিক অ পাবলিক অবস্থান (যেমন একটি স্ট্যাটিক ইভেন্টে সাবস্ক্রাইব করা, বা স্ট্যাটিক ফিল্ড প্রারম্ভিকীকরণ দ্বারা একটি সিংক প্রয়োগ করা) হিসাবে নিজেই একটি রেফারেন্স লিখতে পারে, সেটিও নিজে নিজেই rooted হতে পারে, যেহেতু কোন সুস্পষ্ট উপায় নেই ... um ... এটা তার লাঙ্গল থেকে "uproot"
যোগ লেখক Jeffrey Hantin, উৎস
অসমর্থিত / নেটিভ কোড সাধারণত শারীরিক লিকের চেয়ে বেশি ঝুঁকিপূর্ণ কিন্তু এই লজিকাল / রুট বেশী নয়। এটা কারণ আমাদের এই রুঢ় সম্পদের যা আছে "uprooted" হতে ব্যর্থ হয়, সাধারণত তারা স্পষ্টভাবে সি মত একটি ভাষা কোনভাবে ধ্বংস শেষ পর্যন্ত শেষ হবে। এই ক্ষেত্রে ঘটে যে ত্রুটি প্রায়ই dangling পয়েন্টার এবং প্রায়ই কিছু ধরনের segfault এর এটি অ্যাক্সেস সঙ্গে যুক্ত। যদিও এই রুটিযুক্ত সম্পদ থাকার জন্য আসলেই বেশিরভাগই সুবিধাজনক, তবে অ্যাপ্লিকেশনটি বন্ধ না হওয়া পর্যন্ত মেমোরিটি ব্যবহার করা হয় (একটি ক্র্যাশ খুব অপ্রয়োজনীয়, সহজেই সনাক্ত করা বাগ)।
যোগ লেখক Team Upvote, উৎস

সমস্ত স্মৃতি লিক প্রোগ্রাম সমাপ্তির দ্বারা সমাধান করা হয়।

যথেষ্ট মেমরি লিক এবং অপারেটিং সিস্টেম আপনার পক্ষে সমস্যার সমাধান করার সিদ্ধান্ত নিতে পারে।

0
যোগ

যদি আপনি এনটাইটেলমেন্টে একটি মেমরি লিক নির্ণয় করতে চান, এই লিঙ্কগুলি পরীক্ষা করুন:

http: // msdn .microsoft.com / en-US / পত্রিকা / cc163833.aspx

http: // msdn .microsoft.com / en-US / পত্রিকা / cc164138.aspx

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

মাইক্রোসফট এছাড়াও একটি নতুন টুল আছে ক্র্যাশ ডাম্প তৈরি সঙ্গে সাহায্য, ADPlus প্রতিস্থাপন, DebugDiag বলা হয়।

http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en

0
যোগ

Using CLR Profiler from Microsoft http://www.microsoft.com/downloads/details.aspx?familyid=86ce6052-d7f4-4aeb-9b7a-94635beebdda&displaylang=en is a great way to determine which objects are holding memory, what execution flow leads to the creation of these objects, and also monitoring which objects live where on the heap (fragmentation, LOH, etc.).

0
যোগ

এছাড়াও মনে রাখা যে। NET এর দুটি হাপ আছে, এক বড় বস্তুর হ্যাপ হচ্ছে। আমি মোটামুটি 85k বা বড় বস্তুর এই গাদা করা হয় বিশ্বাস। এই গাদা নিয়মিত গাদা তুলনায় একটি আলাদা জীবনকাল নিয়ম আছে।

যদি আপনি বড় মেমরি স্ট্রাকচার (ডিক্সার বা তালিকা) তৈরি করেন তবে সঠিক নিয়মগুলি দেখতে কি হবে তা দেখতে হবে।

যতক্ষণ প্রসেস সমাপ্তির উপর মেমোরি পুনরুদ্ধার করা হয়, যদি আপনার Win98 বা এটি সমতুল্য না হয়, সবশেষে প্রত্যাহার করা হয় অপারেটিং সিস্টেমে। শুধুমাত্র ব্যতিক্রম ক্রস প্রক্রিয়া খোলা হয় যে জিনিস এবং অন্য একটি প্রক্রিয়া এখনও খোলা সম্পদ আছে।

COM অবজেক্টগুলি চতুর হতে পারে। আপনি যদি সর্বদা IDispose প্যাটার্ন ব্যবহার করেন তবে আপনি নিরাপদ হবেন কিন্তু আমি কয়েকটি ইন্টারপ সেলের মাধ্যমে রান করেছি যা বাস্তবায়নে স্বতন্ত্র </কোড>। এখানে কী চাওয়ার জন্য মার্শাল। রিয়েলিকম কম্বোবক্স এ কল করতে হয়। COM অবজেক্টগুলি এখনও স্ট্যান্ডার্ড COM রেফারেন্স কাউন্টিং ব্যবহার করে।

0
যোগ

আমি দেখতে পাই যে নেট মেমরি প্রোফারার খুব ভাল সাহায্য। এটা মাইক্রোসফট CLR Profiler মত বিনামূল্যে নয়, কিন্তু আমার মতে পয়েন্ট থেকে দ্রুত এবং আরো একজন

0
যোগ

আমি মনে করি "কি মেমরি লিক" এবং "প্রভাবগুলি কি" প্রশ্নের উত্তরে উত্তম উত্তর দেওয়া হয়েছে, কিন্তু আমি অন্যান্য প্রশ্নে আরো কিছু জিনিস যোগ করতে চেয়েছিলাম ...

কীভাবে আপনার অ্যাপ্লিকেশন লিক শিখতে হবে

একটি আকর্ষণীয় উপায় perfmon খুলুন এবং সমস্ত হ্যাপসগুলিতে # বাইট এবং # Gen 2 সংগ্রহগুলি জন্য ট্রেস যোগ করুন প্রক্রিয়া। যদি একটি নির্দিষ্ট বৈশিষ্ট্য প্রয়োগ করে মোট বাইটগুলি বৃদ্ধি পায়, এবং পরবর্তী মেমোরির পরে যে মেমরি বরাদ্দ করা হয়, আপনি বলতে পারেন যে বৈশিষ্ট্যটি লিক মেমরি।

কিভাবে প্রতিরোধ করবেন

অন্যান্য ভাল মতামত দেওয়া হয়েছে। আমি শুধু এটি যোগ করা যে সম্ভবত সবচেয়ে বেশি উপেক্ষা করা .net মেমরির লিকের কারণগুলি তাদের অপসারণ না করে বস্তুর ইভেন্ট হ্যান্ডেলারগুলি যোগ করা। একটি বস্তু সংযুক্ত একটি ইভেন্ট হ্যান্ডলার যে বস্তুর রেফারেন্স একটি ফর্ম, তাই অন্যান্য সব রেফারেন্স চলে গেছে এমনকি পরে সংগ্রহ আটকাতে পারে সর্বদা ইভেন্ট হ্যান্ডলারগুলি (<�কোড> - = সিনট্যাক্স ব্যবহার করে সি # ব্যবহার করে) আলাদা মনে রাখুন

প্রসেসটি প্রস্থান করলে এবং COM Interop সম্পর্কে কি কি প্রতিক্রিয়া হয়?

যখন আপনার প্রসেসটি প্রস্থান করে, তখন তার ঠিকানা স্পেসে মেমরির মেমরি মেমোরি করা হয় ওএস দ্বারা পুনরুদ্ধার করা হয়, যার মধ্যে কোনও COM বস্তু DLL থেকে পরিবেশিত হয়। তুলনামূলকভাবে কম, COM বস্তুগুলিকে আলাদা প্রসেসগুলি থেকে পরিবেশন করা যায়। এই ক্ষেত্রে, যখন আপনার প্রক্রিয়াটি প্রস্থান করে, তখন আপনি যে কোন COM সার্ভার প্রসেসগুলিতে ব্যবহৃত মেমরির জন্যও দায়বদ্ধ হতে পারেন।

0
যোগ

কীভাবে আবর্জনা সংগ্রহকারী কাজ করে তা জাফ রিখটারের মধ্যে সর্বোত্তম ব্যাখ্যা সি # এর মাধ্যমে CLR বই, (চ। এই পড়া পড়া বস্তু অবশেষ কিভাবে বোঝার জন্য একটি মহান ভিত্তি দেয়।

আতঙ্ক ছড়ানোর বস্তুর সবচেয়ে সাধারণ কারণগুলির মধ্যে একটি হল একটি আঙ্গিনায় একটি শ্রেণীকে আচ্ছাদিত করে। আপনি যদি একটি বহিরাগত ইভেন্ট হুক আপ

উদাহরণস্বরূপ

SomeExternalClass.Changed += new EventHandler(HandleIt);

এবং যখন আপনি নিখোঁজ এটি অশ্রদ্ধ ভুলবেন, তারপর SomeExternalClass আপনার বর্গ একটি রেফারেন্স আছে।

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

কিন্তু একটি নির্দিষ্ট টাইপ চেক করার একটি খুব দ্রুত উপায় শুধুমাত্র WnDBG ব্যবহার করা হয় (আপনি সংযুক্ত যখন VS.NET তাৎক্ষণিক উইন্ডোতে ব্যবহার করতে পারেন):

.loadby sos mscorwks
!dumpheap -stat -type 

Now do something that you think will dispose the objects of that type (উদাহরণস্বরূপ close a window). It's handy here to have a debug button somewhere that will run System.GC.Collect() a couple of times.

Then run !dumpheap -stat -type again. If the number didn't go down, or didn't go down as much as you expect, then you have a basis for further investigation. (I got this tip from a seminar given by Ingo Rammer).

0
যোগ

কেন মানুষ মনে করে যে একটি মেমরি লিক। NET অন্য কোন লিক হিসাবে একই নয়?

একটি মেমরি লিক যখন আপনি একটি সম্পদ সঙ্গে সংযুক্ত এবং এটি করা যাক না। আপনি এই উভয় পরিচালিত এবং অনির্দিষ্ট কোডিং মধ্যে করতে পারেন।

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

GC এবং অন্যান্য জাদুকরি আপনার জগাখিচুড়ি পরিষ্কার বিশ্বাস মেমরির লিক সংক্ষিপ্ত উপায়, এবং পরে খুঁজে পেতে কঠিন হবে।

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

অন্যদিকে NET- তে, অনেক মানুষ মনে করে যে জি সি সবকিছু পরিষ্কার করবে। ওয়েল, এটি আপনার জন্য কিছু করে, কিন্তু আপনি নিশ্চিত করতে হবে যে এটি তাই। .NET অনেক জিনিস মোছা হয়, তাই আপনি সবসময় যদি আপনি একটি পরিচালিত বা অপ্রচলিত সম্পদ মোকাবেলা করা হয় জানি না, এবং আপনি কি মোকাবেলা করছেন তা নিশ্চিত করতে প্রয়োজন। হ্যান্ডলিং ফন্ট, GDI সম্পদ, সক্রিয় ডিরেক্টরি, ডেটাবেস ইত্যাদি সাধারণত আপনার জন্য সন্ধান করার প্রয়োজন হয়।

নিয়ন্ত্রিত পদে আমি আমার ঘাড়টি রাখব   লাইন বলতে একবার এটি দূরে যায়   প্রক্রিয়াটি নিহত / অপসারণ করা হয়।

আমি অনেক মানুষ যদিও এই আছে দেখুন, এবং আমি সত্যিই এই শেষ হবে আশা করি। আপনি আপনার জগৎ পরিষ্কার করার জন্য আপনার অ্যাপটি বন্ধ করার জন্য ব্যবহারকারীকে জিজ্ঞাসা করতে পারেন না! একটি ব্রাউজারে নজর রাখুন, যা IE, FF ইত্যাদি হতে পারে, তারপর খুলুন, বলুন, Google Reader, কিছু দিন থাকার জন্য এবং কি ঘটবে তা দেখুন।

আপনি যদি ব্রাউজারের অন্য ট্যাব খুলেন তবে কিছু সাইটের দিকে নজর দিন, তারপর যে ট্যাবটি ব্রাউজার লিক তৈরি করে এমন অন্য পৃষ্ঠার হোস্ট করা ট্যাবটি বন্ধ করুন, আপনি কি মনে করেন ব্রাউজারটি মেমরি মুক্তি দেবে? তাই IE সঙ্গে না আমার কম্পিউটারে যদি আমি Google Reader ব্যবহার করি তবে অল্প সময়ের মধ্যে (প্রায় 3-4 দিন) 1 গিগাহার্জ মেমরি খায়। কিছু সংবাদপদ্ধতি এমনকি খারাপ।

0
যোগ

One definition is: Unable to release unreachable memory, which can no longer be allocated to new process during execution of allocating process. It can mostly be cured by using GC techniques or detected by automated tools.

আরো তথ্যের জন্য, দয়া করে http://all-about-java-and-weblogic-server.blogspot.in/2014/01/what-is-memory-leak-in-java.html

0
যোগ