প্রাইভেট বাইটস, ভার্চুয়াল বাইটস, ওয়ার্কিং সেট কী?


489

আমি কোনও প্রক্রিয়াতে মেমরি ফাঁস ডিবাগ করার জন্য পারফোন উইন্ডোজ ইউটিলিটিটি ব্যবহার করার চেষ্টা করছি।

পারফমন শর্তাদি এভাবে ব্যাখ্যা করে:

ওয়ার্কিং সেট হ'ল এই প্রক্রিয়াটির ওয়ার্কিং সেটের বর্তমান আকার, বাইটে। কার্যনির্বাহী সেটটি প্রক্রিয়াটির থ্রেড দ্বারা সম্প্রতি মেমরি পৃষ্ঠাগুলির সেট touched কম্পিউটারে ফ্রি মেমরি যদি একটি প্রান্তিকের উপরে থাকে, পৃষ্ঠাগুলি ব্যবহার না থাকলেও কোনও প্রক্রিয়াটির ওয়ার্কিং সেটে রেখে যায়। যখন ফ্রি মেমরি একটি প্রান্তিকের নীচে নেমে আসে, পৃষ্ঠাগুলি ওয়ার্কিং সিট থেকে ছাঁটা হয়। যদি তাদের প্রয়োজন হয় তবে তারা মূল স্মৃতি ছেড়ে যাওয়ার আগে ওয়ার্কিং সেটে নরম-ত্রুটিযুক্ত হবে।

ভার্চুয়াল বাইটস প্রসেসটি যে ভার্চুয়াল অ্যাড্রেস স্পেসটি ব্যবহার করছে তার বর্তমান আকার, ভার্চুয়াল অ্যাড্রেস স্পেসের ব্যবহার অগত্যা ডিস্ক বা প্রধান মেমরি পৃষ্ঠাগুলির সাথে সম্পর্কিত ব্যবহার বোঝায় না। ভার্চুয়াল স্পেস সীমাবদ্ধ, এবং প্রক্রিয়াটি লাইব্রেরিগুলি লোড করার ক্ষমতা সীমাবদ্ধ করতে পারে।

প্রাইভেট বাইটস মেমরির বর্তমান আকার, বাইটগুলিতে যা এই প্রক্রিয়াটি বরাদ্দ করেছে যা অন্যান্য প্রক্রিয়াগুলির সাথে ভাগ করা যায় না।

আমার এই প্রশ্নগুলি:

এটি কি প্রাইভেট বাইটস যা আমাকে মাপানো উচিত তা নিশ্চিত হওয়ার জন্য যে প্রক্রিয়াটিতে কোনও ফাঁস হচ্ছে কারণ এতে কোনও ভাগ করা লাইব্রেরি এবং কোনও লিক জড়িত নেই, যদি ঘটতে থাকে তবে প্রক্রিয়া থেকেই আসবে?

প্রক্রিয়া দ্বারা গ্রাস করা মোট স্মৃতি কী? এটি ভার্চুয়াল বাইট বা এটি ভার্চুয়াল বাইটস এবং ওয়ার্কিং সেট এর যোগফল?

প্রাইভেট বাইটস, ওয়ার্কিং সেট এবং ভার্চুয়াল বাইটের মধ্যে কি কোনও সম্পর্ক আছে?

মেমরির ব্যবহার সম্পর্কে আরও ভাল ধারণা দেওয়ার মতো আরও কি কোনও সরঞ্জাম রয়েছে?


3
আরও ভাল সরঞ্জামটি ভ্যালগ্রাইন্ড / হেলগ্রিন্ড হতে পারে, তবে উইন্ডোজ দুর্ভাগ্যক্রমে নয় :(
কর্নেল কিসিলেউইচজ

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

@ সের্গেইকুরেনকভ একটি জিনিস আমরা বলতে পারি যে এটি "মেমরি বিভাজন" এর কারণে কখনও হবে না।
জেমি হানরাহান

উত্তর:


516

এই প্রশ্নের সংক্ষিপ্ত উত্তর হ'ল এই নির্ধারিত মানগুলির মধ্যে কোনটিই একটি নির্বাহযোগ্য আসলে কত মেমরি ব্যবহার করে তার নির্ভরযোগ্য সূচক নয় এবং এগুলির কোনও মেমরি ফাঁস ডিবাগ করার জন্য সত্যই উপযুক্ত নয়।

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

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

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

সুতরাং সম্পর্কগুলি হ'ল:

  • ব্যক্তিগত অ্যাপ্লিকেশনগুলি যা আপনার অ্যাপ্লিকেশনটি আসলে বরাদ্দ করেছে তা কিন্তু পেজফাইলে ব্যবহার অন্তর্ভুক্ত করে;
  • ওয়ার্কিং সেট হ'ল পৃষ্ঠাবিহীন প্রাইভেট বাইট প্লাস মেমরি-ম্যাপযুক্ত ফাইলগুলি;
  • ভার্চুয়াল বাইটস হল ওয়ার্কিং সেট প্লাস পৃষ্ঠাযুক্ত ব্যক্তিগত বাইটস এবং স্ট্যান্ডবাই তালিকা।

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

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

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

আমি আশা করি এটি কিছু জিনিস পরিষ্কার হয়ে যায়! ডিবাগিংয়ের জন্য মেমরি ফুটোটি ট্র্যাক করা সবচেয়ে কঠিন কাজ। শুভকামনা।


26
আমি ভীত যে আপনি উত্তরটি বেশ সঠিক নয়। প্রাইভেট বাইটস প্রসেসিয়াল এক্সিকিউটেবল যে পরিমাণ মেমরি (র‌্যাম) চেয়েছিল তা বোঝায় - কেবল শারীরিক স্মৃতি নয়। সুতরাং আপনি অবশ্যই ব্যক্তিগত বাইটগুলি পর্যবেক্ষণ করে মেমরি ফাঁসের বেশিরভাগ ক্ষেত্রে নিরীক্ষণ করতে পারেন। :: ভিজুয়ালআলোক মেমরির একটি বৃহত অংশ (1.5.G বলুন) করতে অঙ্গীকার করুন। আপনি দেখতে পাবেন যে আপনার প্রাইভেট বাইট কার্যকারী সেট থেকে অনেক বড়। যা প্রমাণ করে যে আপনার "ওয়ার্কিং সেটটি প্রাইভেট বাইট প্লাস মেমরি-ম্যাপযুক্ত ফাইলগুলি" ভুল।
জে ঝু

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

2
@ অ্যারোনট: নির্ভরযোগ্য সূচক এবং ডিবাগিংয়ের জন্য উপযুক্ত সম্পর্কে আপনার প্রথম বক্তব্য বিভ্রান্তিকর। ব্যক্তিগত বাইটস অ্যাপ্লিকেশন মেমরি স্পেস ফাঁসের একটি নির্ভরযোগ্য সূচক। এটি একটি নির্ভরশীল ডিএলএল এবং অপ্রত্যক্ষ হতে পারে তবে এটি অ্যাপ্লিকেশন মেমরির জায়গার ফাঁস। এটি ব্যাখ্যা করতে পারেন কেন এটি ডিবাগিংয়ের জন্য ব্যবহার করা যায় না? অ্যাপ্লিকেশন প্রক্রিয়াটির একটি সম্পূর্ণ মেমরি ডাম্প আমাদের এই মেমরিটি কী খাচ্ছে তা আমাদের জানা উচিত। আমি নিশ্চিত না কেন এটি ডিবাগিংয়ের জন্য ব্যবহার করা যায় না তা আমি বুঝতে পেরেছি। আপনি কিছু আলো চালাতে পারেন?
G33kKahuna

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

1
আপত্তিজনকভাবে একটি পূর্ণ চালান, এটি তাত্ক্ষণিক স্তূপে কোনও পিনযুক্ত বস্তু দেখানো উচিত। আপনি eeheap -gc পরীক্ষা করে নিশ্চিত করতে পারেন। ভলিউমটি কোথায় আটকেছে এটি আপনাকে দেখাতে পারে। সাধারণত, উপরের সমস্ত কমান্ডের সাথে যদি কোনও ইঙ্গিত পাওয়া যায় না, তবে আপনার ব্যক্তিগত বাইটগুলি জিসিতে অবরুদ্ধ অবজেক্ট দ্বারা গ্রাস করা হয়। এখন গ্যাচান্ডেলস বা গ্ল্যাকাক্সের দিকে এগিয়ে যান। এই আদেশগুলি আপনাকে কী ধরণের / অবজেক্টের ঠিকানা ম্যাপ করা যায় না তা জানাতে হবে। পয়েন্টারটি এখনও আছে তবে অবজেক্টটি চলে গেছে। অপ্রকাশিত ইভেন্ট হ্যান্ডলারের ক্ষেত্রে এটি এমন শ্রেণিবদ্ধ সমস্যা।
G33kKahuna

10

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

এই প্রশ্নের পূর্বের উত্তরটি বিভিন্ন ধরণের কী তা একটি দুর্দান্ত ব্যাখ্যা দিয়েছে।

আপনি একটি সরঞ্জামের সুপারিশ সম্পর্কে জিজ্ঞাসা করছেন: আমি মেমরি ভ্যালিডেটরকে প্রস্তাব দিই। কোটি কোটি মেমরি বরাদ্দ করে এমন অ্যাপ্লিকেশনগুলি পর্যবেক্ষণে সক্ষম।

http://www.softwareverify.com/cpp/memory/index.html

দাবি অস্বীকার: আমি মেমরি ভ্যালিডেটর ডিজাইন করেছি।


1
আমি একটি সাধারণ ক্লাস ফাইল (জাভাতে) চালাতে পারি না? কি দেয়?
jn1kk

আমি সন্দেহ করি যে স্টিফেন এবং ডেভিল একরকম সম্পর্কিত বা এমনকি ক্লোন করেছেন ...: ডি;)
রবার্ট কোরিতনিক

@ স্টেফেনকেললেট, ট্রায়াল সংস্করণ আছে কি?
পেসারিয়ার 18

@ পেসারিয়র যদি আপনি লিঙ্কটি অনুসরণ করেন তবে পৃষ্ঠার বামে কেনা বিকল্পের ঠিক উপরে x86 এবং x64 উভয় সংস্করণের জন্য একটি পরীক্ষা রয়েছে is
ব্র্যাডলি এ। টেট্রোল্ট

10

সুগন্ধি কাউন্টারগুলির সংজ্ঞা শুরু থেকেই ভেঙে গেছে এবং কোনও কারণে এটি সংশোধন করা খুব কঠিন বলে মনে হচ্ছে।

উইন্ডোজ মেমরি পরিচালনার একটি ভাল ওভারভিউ এমএসডিএন-তে " মেমরি মেমরি ম্যানেজমেন্টের উদ্ঘাটিত " ভিডিওতে পাওয়া যায় : এতে মেমরি ফাঁস (যেমন ওয়ার্কিং সেট ম্যানেজমেন্ট) ট্র্যাক করার প্রয়োজনের চেয়ে বেশি বিষয় অন্তর্ভুক্ত করা হয়েছে তবে প্রাসঙ্গিক বিষয়গুলিতে পর্যাপ্ত বিবরণ দেওয়া হয়েছে।


পারফোন কাউন্টার বিবরণ দিয়ে সমস্যার একটি ইঙ্গিত দেওয়ার জন্য, এখানে এমএসডিএন-তে " প্রাইভেট বাইট পারফরম্যান্স কাউন্টার - সাবধান! " থেকে প্রাইভেট বাইটগুলি সম্পর্কে অভ্যন্তরীণ গল্পটি দেওয়া হয়েছে :

প্রশ্ন: প্রাইভেট বাইট কখন প্রাইভেট বাইট হয় না?

উত্তর: যখন এটি বাসিন্দা না হয়।

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


এমএসডিএন-তে " পারফরম্যান্স প্ল্যানিং " থেকে:

3.3 প্রাইভেট বাইট

3.3.1 বিবরণ

প্রাইভেট মেমরি, এমন প্রক্রিয়াটির জন্য বরাদ্দ করা মেমরি হিসাবে সংজ্ঞায়িত করা হয় যা অন্য প্রক্রিয়াগুলি দ্বারা ভাগ করা যায় না। এই মেমরিটি ভাগ করা মেমরির চেয়ে ব্যয়বহুল যখন কোনও মেশিনে একাধিক এ জাতীয় প্রক্রিয়া চালিত হয়। (Traditionalতিহ্যবাহী) পরিচালনাবিহীন dলগুলিতে ব্যক্তিগত মেমরিটি সাধারণত সি ++ স্ট্যাটিক্সের সমন্বয়ে গঠিত হয় এবং এটি ডেলির মোট কার্যক্ষমতার 5% ক্রম হয়%


1
এটি কীভাবে ভেঙে গেছে তার সম্পর্কে অত্যন্ত উত্তম উদাহরণের কারণে ভোট দিন!
ব্রুনো ব্র্যান্ট

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

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

5

এখানে একটি আকর্ষণীয় আলোচনা রয়েছে: http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/307d658a-f677-40f2-bdef-e6352b0bfe9e/ আমার এই থ্রেডের বোঝা হ'ল ছোট বরাদ্দগুলি নিখরচায় করা হয় প্রাইভেট বাইটস বা ওয়ার্কিং সেট প্রতিফলিত হয় না।

দীর্ঘ সংক্ষিপ্ত বিবরণ:

যদি আমি ফোন করি

p=malloc(1000);
free(p);

তারপরে প্রাইভেট বাইটগুলি কেবল বরাদ্দকে প্রতিফলিত করে, হ্রাস নয়।

যদি আমি ফোন করি

p=malloc(>512k);
free(p);

তারপরে প্রাইভেট বাইটগুলি সঠিকভাবে বরাদ্দ এবং অবনতি প্রতিফলিত করে।


7
এটি সি স্ট্যান্ডার্ড লাইব্রেরি মেমরি ফাংশনগুলি একটি কাস্টম বা উইন 32 হিপ ব্যবহার করে যা নিম্ন স্তরের প্রক্রিয়া-স্তরের মেমরি পরিচালনার শীর্ষে একটি মেমরি পরিচালন প্রক্রিয়া বলে প্রমাণিত হয়।
কিবেরিয়াস

@ কিবেরিয়াস, সুতরাং আমরা কীভাবে এর নীচে যাব ?
পেসারিয়ার

(1) ফ্রি (ম্যালোক (1000)); // এটি কি চিরকালের জন্য প্রাইভেট বাইটগুলি বাড়িয়ে তুলবে?
ফ্রাঙ্কস্পাইক

2
@ ফ্রাঙ্কস্পাইক: না, এটি একটি নির্দিষ্ট পয়েন্টে বাড়বে (সাধারণত প্রায় 4 কেবি, তবে এটি পরিবর্তিত হতে পারে) এবং তারপরে থামবে, কারণ সিআরটি ওএস থেকে নতুন পৃষ্ঠাগুলির অনুরোধ না করে আগের মুক্ত মেমরিটিকে পুনরায় ব্যবহার করবে।
মিরাল

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