JVM মেমরি স্পেসকে দুটি অংশের মধ্যে ভাগ করেছে একটি হল স্ট্যাক এবং আরেকটি হল হিপ স্পেস। স্ট্যাক স্পেস প্রধানত মেথড এক্সিকিউশন এবং স্থানীয় ভেরিয়েবলের ক্রম সংরক্ষণের জন্য ব্যবহৃত হয়।
স্ট্যাক সর্বদা LIFO ক্রমে ব্লকগুলি সংরক্ষণ করে যেখানে হিপ মেমরি মেমরি ব্লকগুলি বরাদ্দ এবং ডিললোকেট করার জন্য গতিশীল বরাদ্দ ব্যবহার করে।
স্তূপে বরাদ্দ করা মেমরি নিম্নলিখিত ঘটনাগুলির মধ্যে একটি না হওয়া পর্যন্ত বেঁচে থাকে :
- প্রোগ্রাম বন্ধ করা হয়েছে
- মেমরি ফ্রি
বিপরীতে, ফাংশন ফিরে না আসা পর্যন্ত জীবন স্ট্যাক করার জন্য বরাদ্দ করা মেমরি। নীচে পার্থক্যগুলি রয়েছে৷
৷Sr. না। | কী | স্ট্যাক | হিপ মেমরি |
---|---|---|---|
1 | মৌলিক | স্ট্যাক মেমরি আইটেমগুলিকে সংরক্ষণ করতে ব্যবহৃত হয় যেগুলির জীবন খুব সংক্ষিপ্ত যেমন স্থানীয় ভেরিয়েবল, বস্তুর একটি রেফারেন্স ভেরিয়েবল | অবজেক্ট এবং JRE ক্লাস সঞ্চয় করার জন্য হিপ মেমরি বরাদ্দ করা হয়। |
2 | অর্ডার করা হচ্ছে | স্ট্যাকটি সর্বদা একটি LIFO (প্রথম আউটে শেষ) অর্ডারে সংরক্ষিত থাকে | হিপ মেমরি হল গতিশীল বরাদ্দকরণ, মেমরিতে ব্লক বরাদ্দ এবং ডিললোকেট করার জন্য কোন নির্দিষ্ট প্যাটার্ন নেই |
3 | আকার | আমরা JVM প্যারামিটার -XSS ব্যবহার করে স্ট্যাক মেমরির আকার বাড়াতে পারি | আমরা JVM বিকল্প -Xms এবং -Xmx ব্যবহার করে হিপ মেমরির আকার বাড়াতে বা কমাতে পারি |
4 | দৃশ্যমানতা | ভেরিয়েবল শুধুমাত্র মালিক থ্রেডের কাছে দৃশ্যমান | এটি সমস্ত থ্রেডে দৃশ্যমান |
5 | ব্যতিক্রম৷ | JVM java.lang.StackOverFlowError নিক্ষেপ করবে | JVM java.lang.OutOfMemoryError নিক্ষেপ করবে |