JVM স্ট্যাক এরিয়া বুঝতে নিচের মূল পয়েন্টগুলো গুরুত্বপূর্ণ:
থ্রেড তৈরির সময় জাভা ভার্চুয়াল মেশিন একটি পৃথক স্ট্যাক তৈরি করে।
JVM এই স্ট্যাকের ওপর শুধু দুটি অপারেশন করে: push (অর্থাৎ ইনসার্ট) এবং pop (অর্থাৎ ডিলিট)।
যখন একটি থ্রেড এক্সিকিউশনরত থাকে, তার সাথে জড়িত স্ট্যাককে রান-টাইম স্ট্যাক বলা হয়।
থ্রেড দ্বারা করা প্রতিটি মেথড কল, ইন্টারমিডিয়েট ক্যালকুলেশন, লোকাল ভেরিয়েবল অ্যাসাইনমেন্ট, কলিং প্যারামিটার ইত্যাদি রান-টাইম স্ট্যাকে একটি অপারেশন হিসেবে সংরক্ষিত হয়।
যখন থ্রেড বন্ধ হয় বা এক্সিকিউশন সম্পন্ন করে, স্ট্যাক থেকে সংশ্লিষ্ট অংশ ডিলিট হয়ে যায়।
যখন থ্রেডের সকল কল সম্পন্ন হয়, স্ট্যাকটি খালি হয়ে যায় এবং ডিলিট হয়ে যায়।
থ্রেড টার্মিনেট করার ঠিক আগে, JVM সেই থ্রেডের সাথে জড়িত স্ট্যাকটি ধ্বংস করে।
একটি থ্রেডের সাথে জড়িত ডেটা সংরক্ষণকারী স্ট্যাক শুধু সেই নির্দিষ্ট থ্রেডের জন্য এক্সক্লूसিভলি উপলব্ধ, অন্য থ্রেডها এটি অ্যাক্সেস করতে পারে না।
এটি ইঙ্গিত করে যে স্ট্যাকে থাকা ডেটা থ্রেড-সেফ (thread-safe)।
একটি থ্রেডের সাথে জড়িত স্ট্যাকে থাকা প্রতিটি ডেটাকে এক্টিভেশন রেকর্ড বা স্ট্যাক ফ্রেম বলা হয়।
নোট - JVM স্ট্যাকের জন্য кон্টিগুয়াস মেমরি লোকেশন থাকা বাধ্যতামূলক নয়।
এক্টিভেশন রেকর্ড/স্ট্যাক ফ্রেমের কাঠামো
এতে তিনটি উপাদান থাকে:
লোকাল ভেরিয়েবল অ্যারে,
অপারেন্ড স্ট্যাক, এবং
ফ্রেম ডেটা
JVM ক্লাস ডেটা পরীক্ষা করে প্রয়োজনীয় আকারের স্ট্যাক ফ্রেম তৈরি করে।
অপারেন্ড স্ট্যাক JVM-এর জন্য একটি ওয়ার্কস্পেস হিসেবে কাজ করে - এটি ইন্টারমিডিয়েট কম্পিউটেশনাল রেজাল্ট সংরক্ষণ করতে ব্যবহৃত হয়। এটি লোকালি ভেরিয়েবল অ্যারে কাঠামোর মতো কিন্তু স্ট্যাকের ওপর push এবং pop অপারেশন করে এক্সেস করা যায়।
ফ্রেম ডেটা - এতে কনস্ট্যান্ট ডেটা ভ্যালু এবং মেথড রিটার্ন করা ডেটা থাকে। এর পাশাপাশি, এতে এক্সেপশন টেবিলের একটি রেফারেন্স থাকে যাতে ক্যাচ ব্লকের সমস্ত তথ্য থাকে যখন এক্সেপশন ক্যাচ করা প্রয়োজন এবং প্রাসঙ্গিক মেসেজ কনসোলে দেখাতে হয়।