Java Developer | digipay
Integer constant pool in java
همه چیز درباره Integer constant pool ( تا اونجایی که من بلدم :) ) :

در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.
این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .
StringBuilder vs StringBuffer vs String
Constant Pool :
یک ناحیه خاص در حافظه است که در فایل کلاس جاوا قرار دارد و شامل اطلاعات ثابت مورد نیاز برای اجرای کلاس میشود. این اطلاعات شامل رشتههای لیترالی، اعداد ثابت، ارجاعات به متدها، کلاسها و رابطها است. به عبارت سادهتر، Constant Pool یک نوع جدول نمادین برای کلاس است که به کامپایلر و ماشین مجازی جاوا کمک میکند تا در زمان اجرا به اطلاعات مورد نیاز دسترسی پیدا کنند.
Integer Constant Pool
بخشی از Constant Pool که به اعداد صحیح اختصاص داده شده است، Integer Constant Pool نام دارد. هنگامی که یک عدد صحیح لیترالی (مانند 10، 20، ...) در کد جاوا استفاده میشود، این عدد در Integer Constant Pool ذخیره میشود.
چرا از Integer Constant Pool استفاده میشود؟
- صرفهجویی در حافظه: اگر چندین متغیر با یک مقدار صحیح یکسان مقداردهی شوند، تنها یک نسخه از آن مقدار در Constant Pool ذخیره میشود و سایر متغیرها به همان نسخه اشاره میکنند.
- بهبود عملکرد: جستجو در Constant Pool بسیار سریعتر از جستجو در Heap است.
- تسهیل عملیات مقایسه: مقایسه دو عدد صحیح که در Constant Pool قرار دارند بسیار ساده و سریع است.
مکانیزم کار Integer Constant Pool:
- ایجاد عدد صحیح: هنگامی که یک عدد صحیح لیترالی در کد نوشته میشود، کامپایلر آن را به یک ارجاع به Constant Pool تبدیل میکند.
- جستجو در Constant Pool: در زمان اجرا، ماشین مجازی جاوا ابتدا در Constant Pool به دنبال عددی با همان مقدار جستجو میکند.
- اگر عدد موجود باشد: اگر عدد مورد نظر در Constant Pool یافت شود، ارجاع به آن به متغیر اختصاص داده میشود.
- اگر عدد موجود نباشد: اگر عدد مورد نظر در Constant Pool وجود نداشته باشد، یک ورودی جدید برای آن در Constant Pool ایجاد میشود و سپس ارجاع به آن به متغیر اختصاص داده میشود.
int x = 10;
int y = 10;در این مثال، هر دو متغیر x و y به همان عدد صحیح در Constant Pool اشاره میکنند.
تفاوت بین Integer Constant Pool و String Constant Pool:
- نوع داده: Integer Constant Pool برای اعداد صحیح و String Constant Pool برای رشتهها استفاده میشود.
- محدودیتها: در Integer Constant Pool، اعداد صحیح باید در محدوده خاصی باشند، در حالی که در String Constant Pool، طول رشتهها محدودیتی ندارد.
نکات مهم:
- اتوکلاسینگ:
در جاوا، اعداد صحیح اولیه (primitive) به طور خودکار به اشیاء Integer بستهبندی میشوند (boxing). این عمل ممکن است باعث شود که اعداد صحیح در Constant Pool قرار نگیرند.
- Integer Cache:
در برخی پیادهسازیهای جاوا، یک کش داخلی برای اعداد صحیح کوچک وجود دارد که به بهبود عملکرد دسترسی به اعداد صحیح متداول کمک میکند.
- تغییرناپذیری (Immutability):
اشیاء Integer که در Constant Pool قرار دارند، تغییرناپذیر هستند.
جمعبندی:
در نهایت اینکه Integer Constant Pool یک ویژگی مهم در جاوا است که به بهبود عملکرد و مصرف حافظه کمک میکند. درک نحوه کار Constant Pool به شما کمک میکند تا کدهای جاوا بهتری بنویسید.
منتظر نگاه های زیباتون هستم .
موفق و پیروز باشید.
مطلبی دیگر از این انتشارات
Integer Pool vs String Pool in Java
مطلبی دیگر از این انتشارات
Java Exception Handling
مطلبی دیگر از این انتشارات
Integer vs int in java