জাভা মধ্যে মেমরি বরাদ্দ কি? স্ট্যাক এবং গাদা স্মৃতি

'জাভাতে মেমরি বরাদ্দ' ভিত্তিক এই নিবন্ধটি স্ট্যাক এবং হিপ ডেটা স্ট্রাকচারের সাথে মেমরি বরাদ্দ সম্পর্কে বিস্তারিত জ্ঞান আপনাকে সহায়তা করবে।

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



স্ট্যাক মেমরি কি?

একটি থ্রেড কার্যকর করার জন্য জাভা স্ট্যাক মেমরি ব্যবহৃত হয়। এগুলিতে পদ্ধতি-নির্দিষ্ট মান রয়েছে যা স্বল্প-কালীন এবং পদ্ধতি থেকে উল্লেখ করা হ'ল অন্যান্য বস্তুর উল্লেখ to



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

পদ্ধতিটি শেষ হওয়ার সাথে সাথেই ব্লকটি অব্যবহৃত হয়ে যায় এবং পরবর্তী পদ্ধতির জন্য উপলব্ধ হয়ে যায়।



ডাবল টু ইন্ট জাভা নিক্ষেপ করুন

হিপ মেমরির তুলনায় স্ট্যাক মেমরির আকার খুব কম।

স্ট্যাক মেমোরির মূল বৈশিষ্ট্য

আমরা এখন পর্যন্ত যা আলোচনা করেছি তা বাদে নিম্নলিখিত আরও কয়েকটি বৈশিষ্ট্য রয়েছে স্ট্যাক স্মৃতি:

  • যথাক্রমে নতুন পদ্ধতিগুলি বলা এবং ফিরে আসায় এটি বেড়ে ওঠে এবং সঙ্কুচিত হয়
  • স্ট্যাকের অভ্যন্তরের ভেরিয়েবলগুলি যতক্ষণ না তাদের তৈরি পদ্ধতি চালিত হয় ততক্ষণ বিদ্যমান
  • এটা স্বয়ংক্রিয়ভাবে পদ্ধতি নির্বাহ শেষ হলে বরাদ্দ এবং নির্বিঘ্নিত
  • যদি এই স্মৃতিটি পূর্ণ থাকে তবে জাভা ছুড়ে দেয় java.lang.StackOverFlowError
  • এই স্মৃতি অ্যাক্সেস হয় দ্রুত যখন গাদা স্মৃতি তুলনা করা হয়
  • এই স্মৃতি থ্রেড নিরাপদ যেমন প্রতিটি থ্রেড তার নিজস্ব স্ট্যাকে কাজ করে

স্ট্যাক ক্লাসে পদ্ধতি

  • অবজেক্ট পুশ ( বস্তুর উপাদান ): স্ট্যাকের শীর্ষে একটি উপাদানকে চাপ দেয়।
  • অবজেক্ট পপ (): স্ট্যাকের শীর্ষ উপাদানটিকে সরিয়ে দেয় এবং প্রদান করে। একটি ‘খালি স্ট্যাকএক্সেপশন’ যখন আমন্ত্রণকারী স্ট্যাকটি খালি থাকে তখন আমরা পপ () কে কল দিলে ব্যতিক্রম ছুঁড়ে দেওয়া হয়।
  • অবজেক্ট পিক (): স্ট্যাকের শীর্ষে উপাদানটি ফেরত দেয় তবে এটি সরিয়ে দেয় না।
  • বুলিয়ান খালি (): স্ট্যাকের শীর্ষে কিছু না থাকলে এটি সত্য হয় returns অন্যথায়, মিথ্যা প্রত্যাবর্তন।
  • পূর্ব অনুসন্ধান ( বস্তুর উপাদান ): এটি নির্ধারণ করে যে কোনও বস্তু স্ট্যাকের মধ্যে বিদ্যমান কিনা। যদি উপাদানটি পাওয়া যায় তবে এটি স্ট্যাকের শীর্ষ থেকে এলিমেন্টের অবস্থানটি ফিরিয়ে দেয়। অন্যথায়, এটি ফেরত -1।

স্ট্যাক বাস্তবায়নের জন্য জাভা কোড

আমদানি করুন java.io।<5 i++){ stack.push(i) } } static void stack_pop(Stack stack){ System.out.println('Pop :') for(int i = 0 i < 5 i++){ Integer y = (Integer) stack.pop() System.out.println(y) } } static void stack_peek(Stack stack){ Integer element = (Integer) stack.peek() System.out.println('Element on stack top : ' + element) } static void stack_search(Stack stack, int element){ Integer pos = (Integer) stack.search(element) if(pos == -1) System.out.println('Element not found') else System.out.println('Element is found at position ' + pos) } public static void main (String[] args){ Stack stack = new Stack() stack_push(stack) stack_pop(stack) stack_push(stack) stack_peek(stack) stack_search(stack, 2) stack_search(stack, 6) } } 

// আউটপুট



memory-allocation-in-java

এখন আসুন হিপ স্পেসে চলে আসি।

জাভা মধ্যে গাদা স্থান

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

জাভা হিপ মেমোরির মূল বৈশিষ্ট্য

  • আমরা এখন পর্যন্ত যা আলোচনা করেছি তা বাদে, গাদা জায়গার আরও কয়েকটি বৈশিষ্ট্য নিম্নলিখিত:
  • এটি অন্তর্ভুক্ত জটিল মেমরি পরিচালনা কৌশলগুলির মাধ্যমে অ্যাক্সেস করা হয়েছে ইয়ং জেনারেশন, ওল্ড বা মেয়াদ জেনারেশন, এবং স্থায়ী জেনারেশন
  • হিপ স্পেস পূর্ণ হলে জাভা ছুড়ে দেয় java.lang.OutOfMemoryError
  • এই মেমরির অ্যাক্সেস স্ট্যাক মেমরির তুলনায় তুলনামূলকভাবে ধীর
  • এই মেমরিটি স্ট্যাকের বিপরীতে, স্বয়ংক্রিয়ভাবে হ্রাস করা হয় না। এইটার দরকার আছে আবর্জনা সংগ্রহকারী অব্যবহৃত জিনিসগুলি মুক্ত করতে যাতে মেমরির ব্যবহারের দক্ষতা বজায় থাকে
  • স্ট্যাকের বিপরীতে, একটি গাদা নয় থ্রেড নিরাপদ কোডটি সঠিকভাবে সিঙ্ক্রোনাইজ করে রক্ষা করা দরকার

জাভা হিপ স্পেস এবং স্ট্যাক মেমরির মধ্যে পার্থক্য

উপরের ব্যাখ্যাগুলির উপর ভিত্তি করে, আমরা সহজেই এর মধ্যে নিম্নলিখিত পার্থক্যগুলি শেষ করতে পারি গাদা এবং স্ট্যাক স্মৃতি.

  • গাদা মেমরি অ্যাপ্লিকেশনটির সমস্ত অংশ দ্বারা ব্যবহৃত হয় যখন স্ট্যাক মেমরিটি কেবলমাত্র মৃত্যুর এক থ্রেড দ্বারা ব্যবহৃত হয়।
  • যখনই কোনও বস্তু তৈরি করা হয়, এটি সর্বদা হিপ স্পেসে সঞ্চিত থাকে এবং স্ট্যাক মেমোরিতে এর উল্লেখ থাকে। স্ট্যাক মেমরিতে কেবল থাকে স্থানীয় আদিম পরিবর্তনশীল এবং রেফারেন্স ভেরিয়েবল গাদা জায়গায় বস্তু।
  • স্তূপে সঞ্চিত বস্তুগুলি বিশ্বব্যাপী অ্যাক্সেসযোগ্য যেখানে স্ট্যাক মেমরিটি অন্য থ্রেড দ্বারা অ্যাক্সেস করা যায় না।
  • স্ট্যাকের মেমরি ম্যানেজমেন্ট এ করা হয় লাইফো এটি হিপ মেমরির ক্ষেত্রে আরও জটিল কারণ এটি বিশ্বব্যাপী ব্যবহৃত হয়। গাদা স্মৃতি বিভক্ত তরুণ-প্রজন্ম, পুরানো-প্রজন্ম ration ইত্যাদি, জাভা আবর্জনা সংগ্রহে আরও বিশদ।
  • স্ট্যাক মেমরি হয় স্বল্পকালীন যদিও হিপ মেমরি শুরু থেকে অ্যাপ্লিকেশন কার্যকর হওয়া অবধি শেষ হয়।
  • আমরা ব্যবহার করতে পারি -এক্সএমএক্স এবং -এক্সএমএস স্টার্টআপের আকার এবং হিপ মেমরির সর্বাধিক আকার নির্ধারণ করার জন্য জেভিএম বিকল্প। আমরা ব্যবহার করতে পারি -এক্সএসএস স্ট্যাক মেমরি আকার নির্ধারণ করতে।
  • স্ট্যাক মেমরি পূর্ণ হলে জাভা রানটাইম ছুড়ে দেয় java.lang.StackOverFlowError যদিও হিপ মেমরি পূর্ণ হয়, এটি ছুড়ে দেয় java.lang.OutOfMemoryError: জাভা হ্যাপ স্পেসত্রুটি.
  • হিপ মেমরির তুলনায় স্ট্যাক মেমরির আকার খুব কম। স্মৃতি বরাদ্দ সরলতার কারণে (লাইফো), তুলনা করা হয় যখন স্ট্যাক মেমরি খুব দ্রুতগাদা স্মৃতি।

তুলনা রেখাচিত্র

প্যারামিটার স্ট্যাক গাদা
বেসিক মেমরি একটি কনজিস্টিউস ব্লকে বরাদ্দ করা হয়এলোমেলো অর্ডারে মেমরি বরাদ্দ করা হয়
বরাদ্দ এবং বাতিলকরণ সংকলক দ্বারা স্বয়ংক্রিয়প্রোগ্রামার দ্বারা ম্যানুয়াল
ব্যয় কমআরও
বাস্তবায়ন শক্তসহজ
প্রবেশাধিকার সময় দ্রুততরধীর
প্রধান সমস্যাটি স্মৃতিশক্তিমেমরি বিভাজন
পার্থক্যের লোকেশন দুর্দান্তপর্যাপ্ত
নমনীয়তা নির্ধারিত দামপুনরায় আকার দেওয়া সম্ভব

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

এখন যে আপনি বুঝতে পেরেছেনজাভাতে মেমরি বরাদ্দএই 'জাভাতে মেমরি বরাদ্দ' নিবন্ধের মাধ্যমে বেসিকগুলি পরীক্ষা করে দেখুন এডুরেকা, বিশ্বস্ত জুড়ে 250,000 এরও বেশি সন্তুষ্ট শিক্ষার্থীর নেটওয়ার্ক সহ একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা by এডুরেকার জাভা জে 2 ইই এবং এসওএ প্রশিক্ষণ এবং শংসাপত্রের কোর্সগুলি জাভা বিকাশকারী হতে চান এমন শিক্ষার্থী এবং পেশাদারদের জন্য ডিজাইন করা হয়েছে। কোর্সটি আপনাকে জাভা প্রোগ্রামিংয়ে একটি প্রধান সূচনা দেওয়ার জন্য এবং হাইবারনেট এবং বিভিন্ন জাভা ফ্রেমওয়ার্কের পাশাপাশি বিভিন্ন জাভা কাঠামোর পাশাপাশি আপনাকে মূল এবং উন্নত জাভা উভয় ধারণার জন্য প্রশিক্ষণের জন্য তৈরি করা হয়েছে & বসন্ত

আমাদের জন্য একটি প্রশ্ন আছে? এই 'জাভাতে মেমরি বরাদ্দ' ব্লগের মন্তব্য বিভাগে এটি উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।