صادق خانزادی
صادق خانزادی
خواندن ۳ دقیقه·۳ ماه پیش

Integer constant pool in java

همه چیز درباره Integer constant pool ( تا اونجایی که من بلدم :) ) :

در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.

این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .

Mutable VS Immutable in java

StringBuilder vs StringBuffer vs String

Integer vs int

HashMap vs TreeMap vs Set

Heap And Stack

Memory Heap vs Memory Leak

Integer Constant Pool

Integer Pool vs String Pool

Ternary Operator

Autoboxing



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:

  1. ایجاد عدد صحیح: هنگامی که یک عدد صحیح لیترالی در کد نوشته می‌شود، کامپایلر آن را به یک ارجاع به Constant Pool تبدیل می‌کند.
  2. جستجو در Constant Pool: در زمان اجرا، ماشین مجازی جاوا ابتدا در Constant Pool به دنبال عددی با همان مقدار جستجو می‌کند.
  3. اگر عدد موجود باشد: اگر عدد مورد نظر در Constant Pool یافت شود، ارجاع به آن به متغیر اختصاص داده می‌شود.
  4. اگر عدد موجود نباشد: اگر عدد مورد نظر در 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 به شما کمک می‌کند تا کدهای جاوا بهتری بنویسید.


منتظر نگاه های زیباتون هستم .

موفق و پیروز باشید.

constant poolstring constant poolinteger constant polljavainteger
Java Developer - Technical Team Lead At Dotin
شاید از این پست‌ها خوشتان بیاید