যদিও জাভা অ্যাপলেটগুলি আজকাল একটি জনপ্রিয় ওয়েব প্রযুক্তি নয়, লিনাক্স সার্ভারে সরাসরি একটি জাভা ভার্চুয়াল মেশিন স্থাপন করার অসংখ্য কারণ রয়েছে। আপনি যদি লিনাক্স জাভা কমান্ড সরাসরি বিযুক্ত হার্ডওয়্যারে বা তার নিজস্ব VM-এর ভিতরে চালানোর চেষ্টা করেন, তাহলে আপনি "VM-এর আরম্ভ করার সময় ত্রুটি ঘটেছে অবজেক্ট হিপের জন্য যথেষ্ট জায়গা সংরক্ষণ করতে পারেনি" বার্তা পেতে পারেন।
এটি সম্ভবত বরং অদ্ভুত দেখায় কারণ কমান্ডটি চালানোর জন্য আপনার কাছে যথেষ্ট RAM আছে, তবে এটি মূলত শারীরিক এবং ভার্চুয়াল মেমরি পৃষ্ঠাগুলি ব্যবহার করার উপায়ে একটি নির্দিষ্ট ব্যঙ্গের কারণে। কিছু তুলনামূলকভাবে বড় আকার নির্দিষ্ট করলে আপনি এই বার্তাটিকে সম্পূর্ণভাবে বাইপাস করতে পারবেন এবং জাভা কমান্ড চালাতে পারবেন যেভাবে আপনি অন্য যেভাবে করবেন।
পদ্ধতি 1:কমান্ড লাইন বিকল্পগুলি ব্যবহার করা
আপনি যদি জাভা চালানোর চেষ্টা করে থাকেন এবং এই বার্তাটি পেয়ে থাকেন, তাহলে প্রোগ্রামটি চালানোর জন্য যথেষ্ট মেমরি সরবরাহ আছে কিনা তা নিশ্চিত করার জন্য আপনি সম্ভবত ফ্রি কমান্ডটি চালিয়েছেন৷
লক্ষ্য করুন যে আমাদের পরীক্ষা মেশিনে আমাদের কাছে 2.3 গিগাবাইট ফিজিক্যাল র্যাম ছিল এবং ভার্চুয়াল মেমরির একটি পৃষ্ঠা এখনও ব্যবহার করা হয়নি। আপনি যদি লক্ষ্য করেন যে আপনার মেমরির ক্রাঞ্চ আছে, তাহলে আবার চেষ্টা করার আগে আপনি যে অন্যান্য জিনিসগুলি চালাচ্ছেন তা বন্ধ করতে চাইবেন। অন্যদিকে, যারা দেখেছেন যে তাদের প্রচুর ফ্রি মেমরি রয়েছে তারা সরাসরি একটি আকার নির্দিষ্ট করার চেষ্টা করতে পারেন।
উদাহরণস্বরূপ, আমাদের মেশিনে আমরা java -Xms256m -Xmx512M হিসাবে কমান্ডটি চালাতে সক্ষম হয়েছি এবং এটি এমনভাবে কাজ করেছে যেমনটি অন্যথায় আশা করা হত। এটি স্টার্টআপে জাভা ভার্চুয়াল মেশিন যে হিপ সাইজ সংরক্ষণ করার চেষ্টা করে তা সীমাবদ্ধ করে। যেহেতু একটি অনিয়ন্ত্রিত ভার্চুয়াল মেশিন অনুমানমূলকভাবে অস্বাভাবিক জিনিস করতে পারে, এটি অন্যথায় মুক্ত সিস্টেমে ত্রুটি বার্তা নিক্ষেপ করতে পারে। আপনি সঠিক সংমিশ্রণটি খুঁজে পাওয়ার আগে এই দুটি মান নিয়েও খেলতে চাইতে পারেন৷
আপনি এটি যা চালাচ্ছেন তা নির্বিশেষে এটি একটি সমস্যা হতে পারে কারণ আপনি GNU/Linux চালানোর জন্য যে ধরনের VM ব্যবহার করছেন তার সাথে JVM-এর কোনো সম্পর্ক নেই।
পদ্ধতি 2:পরিবর্তনকে স্থায়ী করতে ভেরিয়েবল রপ্তানি করা
আপনি যখন কাজ করে এমন একটি মান খুঁজে পান তখন আপনি এটিকে সেই সেশনের জন্য স্থায়ী করতে এটি রপ্তানি করতে পারেন। উদাহরণস্বরূপ, আমরা bash কমান্ড প্রম্পট থেকে _JAVA_OPTIONS=’-Xms256M -Xmx512M’ এক্সপোর্ট ব্যবহার করেছি এবং এটি আমাদের সার্ভার থেকে লগ আউট না হওয়া পর্যন্ত অন্য কোনো বিকল্প ছাড়াই জাভা কমান্ড নিজে থেকে চালানোর অনুমতি দেয়।
যখন আমরা অন্য সেশনে লগ ইন করি তখন এটি আবার চালানোর প্রয়োজন ছিল, তাই আপনি যদি প্রায়ই java কমান্ড ব্যবহার করার পরিকল্পনা করেন তবে আপনি এটিকে প্রাসঙ্গিক স্টার্টআপ স্ক্রিপ্টে যোগ করতে চাইতে পারেন। আমরা আমাদের .bash_login ফাইলে লাইনটি যুক্ত করেছি এবং এটিকে আবার চালানো ছাড়াই প্রতিবার লগইন প্রম্পট ব্যবহার করার সময় এটি কাজ করে বলে মনে হচ্ছে, যদিও আপনি যদি একটি ভিন্ন শেলের সাথে কাজ করেন তবে আপনাকে এটির জন্য অন্য অবস্থান খুঁজতে হতে পারে৷পি>
আপনি হয়তো লক্ষ্য করেছেন যে শুধুমাত্র কিছু হার্ডওয়্যার কনফিগারেশন এই ত্রুটি বার্তাটি ট্রিগার করে। কারণ এটি সাধারণত প্রচুর পরিমাণে শারীরিক র্যাম সহ মেশিনে ঘটে তবে এটি কীভাবে ব্যবহার করতে হয় তার জন্য নিম্ন মাত্রা। জাভা একটি বিশাল ব্লক বরাদ্দ করার চেষ্টা করবে শুধুমাত্র এটি বলা যাবে না, যা এটি মেমরি ফুরিয়ে যাওয়া হিসাবে ব্যাখ্যা করে৷
পদ্ধতি 3:বর্তমান জাভা বিকল্পগুলি প্রিন্ট করা৷
আপনি যদি কমান্ড লাইনে কাজ করে থাকেন এবং আপনি বর্তমানে _JAVA_OPTIONS মানটি কী সেট করেছেন তার একটি দ্রুত রেফারেন্স চান, তাহলে কেবল echo $_JAVA_OPTIONS চালান এবং এটি অবিলম্বে বর্তমান মানগুলি মুদ্রণ করবে। আপনি যখন চেষ্টা করার জন্য সঠিক সংখ্যা বের করার চেষ্টা করছেন তখন এটি সমস্যা সমাধানের জন্য উপযোগী।
মনে রাখবেন যে এই ফিক্সের জন্য অন্য কোনও খেলার প্রয়োজন হবে না, আপনি যদি কখনও ভার্চুয়াল মেমরির সংক্ষিপ্ত প্রান্তে নিজেকে সত্যিকারভাবে খুঁজে পান তবে জাভা "অবজেক্ট হিপের জন্য যথেষ্ট জায়গা সংরক্ষণ করতে পারেনি" বার্তাটি ফেলে দেবে। যদি এটি হয় তবে আপনি বর্তমানে কোন প্রক্রিয়াগুলি চলছে তা দুবার পরীক্ষা করতে চাইবেন এবং সম্ভবত এটি একটি বিকল্প হলে সার্ভারটি পুনরায় চালু করতে চাইবেন। আপনি আরও সোয়াপ স্পেস তৈরি করতে পারেন, কিন্তু যদি এটি একটি সমস্যা হয় তবে এটি অন্য কোনো উপায়ে চেষ্টা করা এবং সংশোধন করা ভাল।
বিরল ক্ষেত্রে যে আপনার সেটিংস সঠিক বলে মনে হচ্ছে কিন্তু এটি এখনও কাজ করছে না, নিশ্চিত করুন যে আপনি 64-বিট জাভা প্যাকেজ ইনস্টল করেছেন কারণ এটি এই সমস্যা থেকে প্রতিরোধী হওয়া উচিত। সংলগ্ন মেমরির প্রয়োজনীয়তা শুধুমাত্র জাভার 32-বিট সংস্করণে প্রযোজ্য। আমরা হাতেগোনা কয়েকটি ক্ষেত্রে 64-বিট সংস্করণটি একটি 32-বিট ভার্চুয়াল মেশিন তৈরি করার চেষ্টা করেছি, তাই কমান্ড লাইনে -d64 বিকল্পটি নির্দিষ্ট করা আমাদের জন্য এটি ঠিক করেছে৷