Java Memory Model
JVM دقیقا مثل باقی برنامه ها یک فضا رو توی رم اشغال میکنه و خودش کامل اون رو مدیریت میکنه. ستا فضای کاملا جدا از هم داریم که JVM دادههای زمان اجرا و کدهای کامپایل شده رو اونجا نگهمیداره.
JVM دقیقا مثل باقی برنامه ها یک فضا رو توی رم اشغال میکنه و خودش کامل اون رو مدیریت میکنه. ستا فضای کاملا جدا از هم داریم که JVM دادههای زمان اجرا و کدهای کامپایل شده رو اونجا نگهمیداره.
ما در مورد اینکه برنامهها چجوری اجرا میشن صحبت کردیم ولی درباره اجرا کننده برنامهها هیچ صحبتی نکردیم.
bytecode ها اینجا اجرا میشن. Execution Engine دستورات رو خط به خط اجرا میکنه.
JVM داخل رم یک فضا برای بارگذاری دادهها در اختیار داره. class loader شی باینری متناظر هر کلاس رو تولید میکنه و اونها رو بصورت جداگانه و با اطلاعات زیر به Runtime Data Area میده و اون هم توی method area ذخیره میکنه.
به ازای هر برنامه که اجرا میشه یک نمونه از ماشین مجازی جاوا JVM داخل رم سیستم بارگذاری میشه و با استفاده از Class Loader Subsystem کلاس های مورد نظر رو وارد رم میکنه و بهش میگن dynamic class loading که کلاسها رو load و link و initialize میکنه. البته این کار رو فقط یک بار در زمان اجرا انجام میده.