প্রত্যেকেই মনে হয় সংকীর্ণ স্মৃতি সম্পর্কে জবাব দিচ্ছে, তবে আরও চাপের বিষয়টিকে স্বীকার করতে অবহেলা করেছে।
এমনকি 100% সংক্ষিপ্ত মেমরি বরাদ্দ থাকা সত্ত্বেও, 32-বিট উইন্ডোজ ওএসে (* ডিফল্টরূপে) আপনার 2 জিআইবি হিপ আকার থাকতে পারে না। কারণ 32-বিট উইন্ডোজ প্রসেসগুলি 2 গিগাবাইটেরও বেশি জায়গাকে সম্বোধন করতে পারে না।
জাভা প্রক্রিয়াটিতে পেরাম জেন (পূর্ব জাভা 8 পূর্ব), থ্রেড প্রতি স্ট্যাকের আকার, জেভিএম / লাইব্রেরি ওভারহেড থাকবে (যা প্রতিটি বিল্ডের সাথে প্রায় অনেক বেড়ে যায়) হিপগুলি ছাড়াও ।
তদ্ব্যতীত, জেভিএম পতাকা এবং তাদের ডিফল্ট মানগুলি সংস্করণগুলির মধ্যে পরিবর্তিত হয়। কেবল নিম্নলিখিতটি চালান এবং আপনি কিছু ধারণা পাবেন:
java -XX:+PrintFlagsFinal
প্রচুর বিকল্পগুলি গাদা এবং এর বাইরে মেমরি বিভাগকে প্রভাবিত করে। আপনার সাথে খেলতে সেই 2 জিআইবি-র কম বা কম কিছু রেখে চলেছে ...
আমার এই উত্তরের অংশগুলি পুনরায় ব্যবহার করতে (টমক্যাট সম্পর্কে, তবে কোনও জাভা প্রক্রিয়াতে প্রযোজ্য):
উইন্ডোজ ওএস 32-বিট প্রক্রিয়াটির মেমরি বরাদ্দকে মোট 2 জিআইবি-র মধ্যে সীমাবদ্ধ করে দেয় (ডিফল্টরূপে)।
[আপনি কেবলমাত্র] প্রায় 1.5 জিবি হিপ স্পেস বরাদ্দ করতে সক্ষম হবেন কারণ প্রক্রিয়াটিতে বরাদ্দকৃত অন্যান্য মেমরিও রয়েছে (জেভিএম / লাইব্রেরি ওভারহেড, পারম জেন স্পেস ইত্যাদি)।
32-বিট উইন্ডোজ কেন 2 জিবি প্রসেসের ঠিকানা জায়গার সীমা চাপায়, কিন্তু -৪-বিট উইন্ডোজ একটি 4 জিবি সীমা চাপায়?
অন্যান্য আধুনিক অপারেটিং সিস্টেমগুলি [কাশি লিনাক্স] ৩২-বিট প্রক্রিয়াগুলিকে 4 জিআইবি ঠিকানাযোগ্য স্থানের সমস্ত (বা বেশিরভাগ) ব্যবহার করার অনুমতি দেয়।
এটি বলেছিল, -৪-বিট উইন্ডোজ ওএসগুলি 32-বিট প্রক্রিয়াগুলির সীমা 4 জিবিবি (32-বিটের উপর 3 জিআইবি) বাড়ানোর জন্য কনফিগার করা যেতে পারে:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx