আমি কীভাবে জানব যে মেমরিটি সঠিকভাবে পরিচালনা করা হচ্ছে না?


12

আমার (2 ডি) গেমের মেমরির পদচিহ্নটি কোনও টেক্সচার লোড করার সময় বাড়তে পারে বলে মনে হয়, যেমন আমি যখন আমার গেমটি শুরু করি তখন এটি একটি ~ 367mb ব্যাকগ্রাউন্ড ফাইলটি ট্রান্সভার করার পরে 30 এমবি প্রাইভেট র‌্যাম ব্যবহার করে, তাই এটি কোনও কোনও মুহুর্তে র‌্যামে থাকে, এটি আরও বেড়ে যায় 54 এমবি প্রাইভেট র‌্যাম।

একই দূরত্বে যাওয়ার পরে একই জিনিস ঘটে যা দুটি পয়েন্টের মাঝে বারবার করা হয়।

যাইহোক, আমার রিডআউটগুলি দেখায় যে টেক্সচার স্ক্রিন বন্ধ হয়ে যাওয়ার পরে প্রোগ্রামটি সঠিকভাবে glDeleteTextures কল করছে; এবং ভালগ্রাইন্ড কোনও ফাঁস খুঁজে পাচ্ছে না।

আমি কীভাবে জানব যে আমার এই সম্পর্কে উদ্বিগ্ন হওয়া উচিত, বা যদি এটি ওএস পৃষ্ঠাগুলির মেমরির একদম স্পর্শকাতর হয়?


1
আপনি কীভাবে আপনার অ্যাপ্লিকেশনটির র‍্যাম ব্যবহার নির্ধারণ করেছেন? আপনি কি কোনও প্রোফাইলার (কোনটি?) ব্যবহার করছেন বা আপনি কেবল নিজের অপারেটিং সিস্টেমের (কোনটি) টাস্ক ম্যানেজারকে বিশ্বাস করছেন?
ফিলিপ

1
KUbuntu এ টাস্ক ম্যানেজার, আমার ডিবাগের প্রোফাইলার আমাকে জানান যে এটি ডেটার জন্য অপেক্ষা করছে তবে কখনই কোনও কিছুই প্রদর্শন করে না।
প্যাট্রিক জীভেস

1
উপায় দ্বারা: আপনি যখন লিনাক্সে মেমরির খরচ পরীক্ষা করেন, কেবল গেম প্রক্রিয়া দ্বারা গ্রাহিত মেমরির দিকে নজর দেওয়া উচিত নয় remember আমি যখন একাধিক প্লাটফর্ম গেমটিতে কাজ করেছি তখন আমরা কী ভেবেছিলাম যে উইন্ডোজ সংস্করণটি লিনাক্স সংস্করণের চেয়ে এত বেশি পরিমাণে র‌্যাম কেন খায়, যতক্ষণ না আমরা লক্ষ্য করেছি যে আমাদের গ্রাফিক্স এপিআইয়ের লিনাক্স সংস্করণটি এক্স 11 প্রসেসের সমস্ত টেক্সচারের জন্য স্পষ্টতই মেমরি বরাদ্দ করেছে।
ফিলিপ

2
আপনার কোনও প্রত্যাশা থাকা উচিত নয় যে glDeleteTextures প্রকৃতপক্ষে মেমরি মুক্ত করবে: গেমদেব.স্ট্যাকেক্সেক্সঞ্জ
ম্যাক্সিমাস মিনিমাস

উত্তর:


21

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

ইউএস-স্পেসে বরাদ্দ পাঠাগারগুলি ওএস থেকে / বার বার মেমরির চাহিদা বা প্রকাশ করতে এড়াতে পুনরায় ব্যবহারের জন্য একটি নির্দিষ্ট পরিমাণ রাখে যা অত্যন্ত ধীর is

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

এটি পুরোপুরি স্বাভাবিক এবং চেয়েছিল। অব্যবহৃত র‌্যামটি শেষ পর্যন্ত আপনার অ্যাপ্লিকেশন দ্বারা পুনরায় ব্যবহার করা হবে।


1
উল্লেখযোগ্য যে, যদি খেলার সময় ব্যবহার বাড়তে থাকে তবে লিক ডিটেক্টররা এখনও কিছু খুঁজে না পান, আপনি অতিরিক্ত মেমরির খণ্ডিত হতে ভুগতে পারেন। স্ট্যাকওভারফ্লো / প্রশ্নগুলি / ১1৫৫৫৩/২ এ বর্ণিত এ জাতীয় সমস্যা সমাধানের পন্থাগুলিও গেম বিকাশের জন্য কার্যকর হবে।
জুলাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.