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


11

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

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

ইউপিডি 2: প্রথমে আমি গিয়ে টাইল ক্লাসের প্রতিটি নতুন ইভেন্টে একটি টেক্সচার বরাদ্দ করেছিলাম এবং এটাই এত বেশি মেমরি নিয়েছিল (সময় দেওয়ার সময়ও)। এখন এটি প্রায় চারগুণ কম জায়গা নেয়। সকলকে ধন্যবাদ, এখনই আমি এগুলি খুব শীঘ্রই ভেঙে ফেলার চিন্তা না করে বিশাল মানচিত্র চালাতে পারি।

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


8
কেবল খেলোয়াড়দের আশেপাশের অঞ্চলগুলি লোড করুন।
মাইকেলহাউস

4
প্রতি টাইল 4 বাইটে 20 মিলিয়ন টাইলগুলি প্রায় 80MB - তাই আপনার টাইলগুলি এত ছোট নয় বলে মনে হচ্ছে। আমরা যাদুতে আপনাকে আরও স্মৃতি দিতে পারি না তাই আপনার ডেটা কীভাবে আরও ছোট করা যায় সে বিষয়ে আমাদের কাজ করতে হবে। সুতরাং, এই টাইলগুলিতে কী রয়েছে তা আমাদের দেখান।
কাইলোটন

লোডিং পদ্ধতিটি কী করে? পোস্ট কোড, আপনি কি সামগ্রী পাইপলাইন ব্যবহার করেন? এটি কি টেক্সচারগুলি মেমোরিতে লোড করে বা কেবল মেটাডেটা? কী মেটাডাটা? এক্সএনএ বিষয়বস্তুর ধরণগুলি সাধারণত পরিচালনা না করা ডাইরেক্টএক্স স্টাফগুলিকে উল্লেখ করে তাই পরিচালিত অবজেক্টগুলি খুব ছোট, তবে পরিচালনা না করা পাশে আপনি ডাইরেক্টএক্স প্রোফাইলার চালা না করে দেখতে পেলেন না এমন প্রচুর পরিমাণে জিনিস আপনি দেখতে পাবেন না। stackoverflow.com/questions/3050188/...
অস্কার Duveborn

2
যদি সিস্টেমটি মেমরির ব্যতিক্রম বাদ দেয় তবে আপনি যা ভাবেন তার পরেও ব্যবহারের জন্য পর্যাপ্ত ফ্রি মেমরি নেই। কোডের কোনও গোপন লাইন থাকবে না আমরা আপনাকে অতিরিক্ত মেমরি সক্ষম করতে দিতে পারি। প্রতিটি টাইলের সামগ্রী এবং আপনি যেভাবে তাদের বরাদ্দ করছেন তা গুরুত্বপূর্ণ।
কাইলোটন

3
আপনি কী মনে করেন যে আপনার মুক্ত স্মৃতি রয়েছে? আপনি কি একটি 64-বিট ওএসের মধ্যে 32-বিট প্রক্রিয়া চালাচ্ছেন?
ডালিন সেয়েভরাইট

উত্তর:


58

অ্যাপটি 1.5Gb এ পৌঁছে ক্র্যাশ হয়ে যায়।

এটি দৃ strongly়ভাবে প্রস্তাব দেয় যে আপনি আপনার টাইলগুলি সঠিকভাবে উপস্থাপন করছেন না, কারণ এর অর্থ প্রতিটি টাইলের আকার ~ 80 বাইট।

আপনার যা বোঝার দরকার তা হ'ল একটি টাইলের গেমপ্লে ধারণা এবং ব্যবহারকারী যে ভিজ্যুয়াল টাইলটি দেখেন তার মধ্যে আলাদা হওয়া দরকার । এই দুটি ধারণা একই জিনিস নয়

উদাহরণস্বরূপ টেরারিয়া নিন। সবচেয়ে ছোট টেরারিয়া বিশ্বে 4200x1200 টাইল লাগে যা 5 মিলিয়ন টাইলস। এখন, এই পৃথিবীর প্রতিনিধিত্ব করতে কত স্মৃতি লাগে ?

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

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

টাইল প্রতি মোট মেমরির আকার: 2 বাইট + 1 বাইট + 1 বিট + 1 বাইট: 4 বাইট + 1 বিট। সুতরাং, ছোট টেরারিয়া মানচিত্রের মোট আকার 20790000 বাইট বা M 20MB। (দ্রষ্টব্য: এই গণনাগুলি টেরারিয়া ১.১ এর উপর ভিত্তি করে then গেমটি তখন থেকে অনেক প্রসারিত হয়েছে, তবে আধুনিক টেরারিয়া প্রতি টাইলের অবস্থানের প্রতি 8 বাইট বা 40MB ডলারের মধ্যেও ফিট হতে পারে Still এখনও বেশ সহনীয়)।

আপনার এই উপস্থাপনাটি কখনই সি # শ্রেণির অ্যারে হিসাবে সঞ্চয় করা উচিত নয় । তাদের পূর্ণসংখ্যার অ্যারে বা অনুরূপ কিছু হওয়া উচিত। এসি # স্ট্রাক পাশাপাশি কাজ করবে।

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

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

এখন টাইলগুলির দৃশ্যমান অঞ্চলটি বিভিন্ন খণ্ডে বিভক্ত হওয়া দরকার, যাতে আপনি যখনই ক্যামেরা চালিত করেন তখন আপনি নিয়মিত স্প্রিট শিট তৈরি না করে। সুতরাং আপনার কাছে স্প্রাইট শিট হিসাবে বিশ্বের x৪xx৪ টি অংশ থাকতে পারে। প্লেয়ারের বর্তমান ক্যামেরার অবস্থান থেকে বিশ্বের যে কোনও 64৪x64৪ টি অংশ দৃশ্যমান হ'ল আপনার আঁকা খণ্ডগুলি। অন্য কোনও অংশে এমনকি স্প্রাইট শিট নেই; যদি কোনও অংশ স্ক্রিন থেকে পড়ে যায়, আপনি সেই শীটটি বাইরে ফেলে দিন (দ্রষ্টব্য: আপনি এটি সত্যই মুছবেন না; আপনি এটি এপাশে রাখেন এবং এটি একটি নতুন অংশের জন্য সম্মানিত করেন যা পরে দৃশ্যমান হতে পারে)।

আমি পুরো মানচিত্রটি কমপক্ষে সার্ভার অ্যাপে (এবং সম্ভব হলে ক্লায়েন্টে) প্রসেস করতে চাই।

আপনার সার্ভারটি টাইলসের ভিজ্যুয়াল উপস্থাপনা সম্পর্কে জানতে বা যত্নের প্রয়োজন নেই। এগুলির জন্য কেবল যত্নশীল হওয়া দরকার is ব্যবহারকারী এখানে একটি টাইল যুক্ত করেন, সুতরাং এটি সেই টাইল সূচকে পরিবর্তন করে।


4
+1 দুর্দান্ত উত্তর। আমার চেয়ে বেশি ভোট দেওয়া দরকার।
মাইকেলহাউস

22

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

আপনি ইনস্ট্যান্সিংয়ের মতো কৌশলগুলিও ব্যবহার করতে পারেন। যেখানে যদি এক প্রকারের সমস্ত টাইলগুলির কেবল মেমোরিতে একটি উদাহরণ থাকে এবং যেখানে প্রয়োজন সেখানে সমস্ত স্থানে একাধিকবার আঁকা হয়।

আপনি এখানে আরও ধারণা পেতে পারেন:

তারা এটি কীভাবে করবে: টেরারিয়ায় কয়েক মিলিয়ন টাইলস

একটি বড় টাইল মানচিত্রের অঞ্চলগুলি পাশাপাশি জঞ্জালগুলি d


সমস্যা হ'ল ক্লায়েন্ট অ্যাপ্লিকেশনের জন্য এ জাতীয় পদ্ধতির পক্ষে ভাল তবে সার্ভারের পক্ষে তেমন ভাল নয়। যখন বিশ্বের কিছু টাইলস বন্ধ হয়ে যায় এবং একটি শৃঙ্খলা প্রতিক্রিয়া শুরু হয় (এবং এটি অনেক কিছু ঘটে) পুরো মানচিত্রটি তার জন্য স্মৃতিতে থাকা উচিত এবং যখন এটি স্মৃতি থেকে দূরে সরে যায় তখন এটি একটি সমস্যা।
ব্যবহারকারী1306322

6
প্রতিটি টালি কি থাকে? টাইল প্রতি কত মেমরি ব্যবহার করা হয়? এমনকি 10 বাইটে প্রতিটি আপনি কেবল 190 মেগাবাইটে। সার্ভারটি টেক্সচার বা প্রয়োজনীয় কোনও প্রয়োজনীয় তথ্য লোড করা উচিত নয়। আপনার যদি 20 মিলিয়ন টাইলসের সিমুলেশন প্রয়োজন হয় তবে আপনাকে সেই টাইলগুলির কাছ থেকে যতটা সম্ভব সিমুলেশন সেট তৈরি করতে হবে যা কেবলমাত্র আপনার চেইন প্রতিক্রিয়ার জন্য প্রয়োজনীয় তথ্য রয়েছে।
মাইকেলহাউস

5

বাইট 56 এর উত্তরটি ভাল, এবং আমি এটিতে মন্তব্য হিসাবে এটি লিখতে শুরু করেছি তবে এটি অনেক দীর্ঘ হয়ে গেছে এবং এমন কয়েকটি টিপস রয়েছে যা উত্তরে আরও সহায়ক হতে পারে।

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

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

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


3

আমি এক্সএনএ গেমটিতে একটি কার্যকর উপায় ব্যবহার করেছি:

  • প্রতিটি টাইল / অবজেক্টের জন্য একটি চিত্র নয় স্প্রিটশিট ব্যবহার করুন এবং সেই মানচিত্রে আপনার যা প্রয়োজন হবে তা কেবল লোড করুন;
  • মানচিত্রটিকে ছোট ছোট ভাগে বিভক্ত করুন, 500 ম 200 টাইলের টুকরো টুকরো টুকরো বলুন যদি আপনার মানচিত্রটি এই আকারের 4 গুণ হয়, বা এমন কিছু যা আপনি থামাতে পারেন;
  • এই অংশটিকে স্মৃতিতে লোড করুন এবং মানচিত্রের দৃশ্যমান অংশগুলিকে আঁকুন (বলুন, দৃশ্যমান টাইলস প্লাস প্রতিটি দিকের জন্য প্লেয়ারটি 1 টি টাইল খেলছে) অফস্ক্রিন বাফারে;
  • ভিউপোর্ট সাফ করুন এবং বাফার ওভার থেকে পিক্সেলগুলি অনুলিপি করুন (এটিকে ডাবল বাফার বলা হয় এবং চলনটি মসৃণ করে);
  • যখন আপনি চলাচল করবেন, মানচিত্রের বাউডগুলি ট্র্যাক করুন এবং পরবর্তী অংশটি এটি কাছাকাছি এলে লোড করুন এবং বর্তমানটিতে সংযোজন করুন;
  • প্লেয়ারটি এই নতুন মানচিত্রে পুরোপুরি উপস্থিত হয়ে গেলে আপনি শেষটিকে আনলোড করতে পারেন।

আপনি যদি একক বৃহত মানচিত্রটিও এটির চেয়ে বড় না হন এবং উপস্থাপিত যুক্তিটি ব্যবহার না করেন তবে আপনিও এই পদ্ধতিতে ব্যবহার করতে পারেন।

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

আপনাকে প্রতিবার এই মানচিত্রের প্রাসঙ্গিক অংশগুলি লুপ করতে হবে এবং কেবল যা প্রয়োজন তা কেবল রেন্ডার করতে হবে। এইভাবে আপনি পারফরম্যান্সকে অনেক উন্নত করবেন।

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

এখানে একটি পরামর্শ হ'ল আমি কোনওভাবেই গেম ডেভের বিশেষজ্ঞ নই এবং আমার খেলাটি আমার স্নাতকের শেষ প্রকল্পের জন্য তৈরি করা হয়েছিল (যা আমার সেরা স্কোর ছিল), তাই আমি প্রতিটি পয়েন্টে ঠিক তেমন সঠিক হতে পারি না, তবে আমার জ্ঞান এবং দক্ষতা সংগ্রহের জন্য http://www.gamasutra.com এবং এক্সএনএ নির্মাতাদের সাইট নির্মাতৃগণ। xna.com (এই সময়ে http://create.msdn.com ) এর মতো ওয়েব এবং সাইটগুলি গবেষণা করেছে এবং এটি আমার পক্ষে ভাল কাজ করেছে ।


2

উভয় ক্ষেত্রেই

  • আরও স্মৃতি কিনুন
  • আপনার ডেটা স্ট্রাকচারকে আরও নিখুঁতভাবে উপস্থাপন করুন
  • একবারে সমস্ত ডেটা মেমরিতে রাখবেন না।

আমার উইন 64৪ বিবিটে ৮ জিবি র‌্যাম রয়েছে এবং অ্যাপটি 1.5 গিগাবাইটে পৌঁছালে ক্র্যাশ হয়ে যায়। সুতরাং আমি যদি কিছু মিস করি না তবে আরও বেশি ভেড়া কেনার আসলে কোনও লাভ নেই।
ব্যবহারকারী1306322

1
@ ব্যবহারকারী1306322: আপনার যদি 20 মিলিয়ন টাইল থাকে এবং এটি প্রায় 1.5 ডলার মেমরি নেয় তবে এর অর্থ আপনার টাইলগুলি প্রতি টাইলের প্রায় 80 বাইট । আপনি এই জিনিসগুলিতে ঠিক কী সংরক্ষণ করছেন?
নিকোল বোলাস

@ নিকলবোলাস যেমনটি আমি বলেছিলাম, কয়েকটি ইনট, বাইট এবং একটি টেক্সচার 2 ডি। এছাড়াও তারা সকলেই 1.5 জিবি নেয় না, অ্যাপ্লিকেশানটি যখন এই মেমরির ব্যয় হয় তখন তা ক্র্যাশ হয়ে যায়।
ব্যবহারকারী1306322

2
@ ব্যবহারকারী1306322: এটি এখনও হওয়া দরকারের চেয়ে অনেক বেশি। কত বড় texture2d? প্রতিটি টাইলের কি এক অনন্যতা রয়েছে, না তারা টেক্সচার ভাগ করে নেয়? এছাড়াও, আপনি এটা কোথায় বলেছেন? আপনি অবশ্যই এটি আপনার প্রশ্নে রাখেন নি, যেখানে তথ্যটি হওয়া উচিত। আপনার নির্দিষ্ট পরিস্থিতি আরও ভালভাবে ব্যাখ্যা করুন, দয়া করে।
নিকল বোলাস

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

1

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

আপনার আপডেটের জবাবে, আপনি Int32.MaxValueআকারে অ্যারে বরাদ্দ করতে পারবেন না । আপনি এটি খণ্ডে বিভক্ত করতে হবে। এমনকি আপনি এটিকে একটি মোড়কের ক্লাসে সজ্জিত করতে পারেন যা কোনও অ্যারের মতো মুখোমুখি প্রকাশ করে:

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