جاوا میں میموری الاٹیکشن کیا ہے؟ اسٹیک اور ہیپ میموری



'جاوا میں میموری الاٹیکشن' پر مبنی یہ آرٹیکل اسٹیک اور ہیپ ڈیٹا ڈھانچے کے ساتھ ساتھ میموری مختص کے بارے میں تفصیلی معلومات کے ساتھ آپ کی مدد کرے گا۔

یاد داشت مختص ایک ایسا عمل ہے جس کے ذریعے کمپیوٹر پروگراموں اور خدمات کو جسمانی یا ورچوئل کے ساتھ تفویض کیا جاتا ہے یاداشت جگہ. اس مضمون میں ، ہم میں میموری کی الاٹمنٹ کے بارے میں سیکھیں گے اور ہم اسٹیک اور ہیپ میموری پر تبادلہ خیال کریں گے۔

اسٹیک میموری کیا ہے؟

جاوا اسٹیک میموری تھریڈ کے نفاذ کے لئے استعمال کی جاتی ہے۔ ان میں طریقہ کار سے متعلق قدریں ہیں جو قلیل المدت ہیں اور ڈھیر میں موجود دیگر اشیاء کا حوالہ دیتے ہیں جو طریقہ کار سے حوالہ مل رہا ہے۔





اسٹیک میموری ہمیشہ حوالہ دیا جاتا ہے LIFO (آخری میں سب سے پہلے آؤٹ) ترتیب. جب بھی کوئی طریقہ استعمال کیا جاتا ہے ، اسٹیک میموری میں مقامی قدیم اقدار کو برقرار رکھنے اور طریقہ کار میں دیگر اشیاء کا حوالہ کرنے کے ل the اسٹیک میموری میں ایک نیا بلاک تشکیل دیا جاتا ہے۔

جیسے ہی یہ طریقہ ختم ہوتا ہے ، یہ بلاک غیر استعمال شدہ ہوجاتا ہے اور اگلے طریقہ کے لئے دستیاب ہوجاتا ہے۔



ترتیب کی تقریب سی ++

ہیپ میموری کے مقابلے میں اسٹیک میموری کا سائز بہت کم ہے۔

اسٹیک میموری کی اہم خصوصیات

اس کے علاوہ ہم نے ابھی تک جن باتوں پر تبادلہ خیال کیا ہے ، ان کی کچھ اور خصوصیات بھی درج ذیل ہیں اسٹیک یاداشت:

  • یہ بڑھتا ہے اور سکڑ جاتا ہے کیونکہ بالترتیب نئے طریقوں کو کہا جاتا اور لوٹا جاتا ہے
  • اسٹیک کے اندر متغیرات اس وقت تک موجود ہیں جب تک کہ ان کو بنانے کا طریقہ چل رہا ہے
  • یہ ہے خود بخود جب طریقہ کار پر عمل درآمد ختم کرتا ہے تو مختص اور غیر منقولہ
  • اگر یہ میموری پوری ہے ، جاوا پھینک دیتا ہے java.lang.StackOverFlowError
  • اس میموری تک رسائی ہے تیز جب ہیپ میموری سے موازنہ کیا جائے
  • یہ میموری ہے دھاگے سے محفوظ چونکہ ہر تھریڈ اپنے اسٹیک میں چلتا ہے

اسٹیک کلاس میں طریقے

  • آبجیکٹ دھکا ( آبجیکٹ عنصر ): اسٹیک کے اوپری حصے پر عنصر کو دباتا ہے۔
  • آبجیکٹ پاپ (): اسٹیک کے اوپری عنصر کو ہٹاتا اور واپس کرتا ہے۔ ایک ‘خالی اسٹیک ایکسپینشن’ استثناء پھینک دیا جاتا ہے اگر ہم پوپ () پر کال کریں جب انوائسنگ اسٹیک خالی ہو۔
  • آبجیکٹ جھانکنا (): اسٹیک کے اوپری حصے پر عنصر لوٹاتا ہے ، لیکن اسے ہٹاتا نہیں ہے۔
  • بولین خالی (): اگر یہ کچھ بھی نہیں ہے اسٹیک کے اوپر ہے تو یہ درست ہو جائے گا۔ بصورت دیگر ، جھوٹا لوٹاتا ہے۔
  • INT تلاش ( آبجیکٹ عنصر ): اس سے طے ہوتا ہے کہ اسٹیک میں کوئی شے موجود ہے یا نہیں۔ اگر عنصر مل جاتا ہے تو ، وہ اسٹیک کے اوپری حصے سے عنصر کی پوزیشن لوٹاتا ہے. بصورت دیگر ، اس کی واپسی -1 ہے۔

اسٹیک کے نفاذ کے لئے جاوا کوڈ

درآمد java.io. * درآمد java.util. * کلاس ٹیسٹ {جامد باطل اسٹیک_پش (اسٹیک اسٹیک) {کے لئے (INT i = 0 i<5 i++){ stack.push(i) } } static void stack_pop(Stack stack){ System.out.println('Pop :') for(int i = 0 i < 5 i++){ Integer y = (Integer) stack.pop() System.out.println(y) } } static void stack_peek(Stack stack){ Integer element = (Integer) stack.peek() System.out.println('Element on stack top : ' + element) } static void stack_search(Stack stack, int element){ Integer pos = (Integer) stack.search(element) if(pos == -1) System.out.println('Element not found') else System.out.println('Element is found at position ' + pos) } public static void main (String[] args){ Stack stack = new Stack() stack_push(stack) stack_pop(stack) stack_push(stack) stack_peek(stack) stack_search(stack, 2) stack_search(stack, 6) } } 

// آؤٹ پٹ



memory-allocation-in-java

اب ، آئیے ہیپ اسپیس میں جائیں۔

جاوا میں ڈھیر جگہ

میموری پروگرامرز کے ذریعہ لکھی گئی ہدایات پر عمل درآمد کے دوران مختص ہے۔ نوٹ کریں کہ ہیپ کا نام ہیپ کا ڈیٹا ڈھانچہ سے کوئی لینا دینا نہیں ہے۔ اسے ہیپ کہا جاتا ہے کیونکہ یہ پروگرامروں کے لئے دستیاب میموری کی جگہ کا ڈھیر ہے مختص اور ڈی مختص کرنا۔ اگر کوئی پروگرامر اس میموری کو بہتر طریقے سے نہیں سنبھالتا ہے تو ، میموری میموری کر سکتا ہےپروگرام میں ہو.

جاوا ہیپ میموری کی اہم خصوصیات

  • ہم نے ابھی تک جو بات کی ہے اس کے علاوہ ، ڈھیر جگہ کی کچھ دوسری خصوصیات یہ ہیں:
  • اس تک رسائی میموری کی پیچیدہ تکنیک کے ذریعہ ہوتی ہے ینگ جنریشن ، اولڈ یا دور نسل ، اور مستقل نسل
  • اگر ڈھیر جگہ پوری ہے تو ، جاوا پھینک دیتا ہے java.lang.OutOfMemoryError
  • اس میموری تک رسائی اسٹیک میموری سے نسبتا سست ہے
  • یہ میموری ، اسٹیک کے برعکس ، خود بخود ختم نہیں ہوتی ہے۔ اس کی ضرورت ہے کوڑا اکٹھا کرنے والا غیر استعمال شدہ اشیاء کو آزاد کرنا تاکہ میموری کے استعمال کی کارکردگی برقرار رہے
  • اسٹیک کے برعکس ، ڈھیر نہیں ہے دھاگے سے محفوظ اور کوڈ کو صحیح طریقے سے ہم آہنگی کرکے محفوظ رکھنے کی ضرورت ہے

جاوا ہیپ اسپیس اور اسٹیک میموری کے مابین فرق

مذکورہ بالا وضاحتوں کی بنیاد پر ، ہم آسانی کے درمیان درج ذیل اختلافات کو پای. تکمیل کرسکتے ہیں ڈھیر اور اسٹیک یاداشت.

  • ڈھیر میموری ایپلی کیشن کے تمام حصوں کے ذریعہ استعمال ہوتی ہے جبکہ اسٹیک میموری کو صرف ایک دھاگے کے ذریعہ استعمال کیا جاتا ہے۔
  • جب بھی کوئی شے تیار کی جاتی ہے ، تو وہ ہمیشہ ہیپ اسپیس میں اسٹور ہوتی ہے اور اسٹیک میموری میں اس کا حوالہ ہوتا ہے۔ اسٹیک میموری میں صرف شامل ہوتا ہے مقامی قدیم متغیرات اور حوالہ متغیر ڈھیر جگہ میں اشیاء کو.
  • ڈھیر میں محفوظ آبجیکٹ عالمی سطح پر قابل رسائ ہیں جبکہ اسٹیک میموری کو دوسرے تھریڈز تک نہیں پہنچا جاسکتا ہے۔
  • اسٹیک میں میموری مینجمنٹ ایک میں کیا جاتا ہے LIFO اس طریقے سے جبکہ یہ ہیپ میموری میں زیادہ پیچیدہ ہے کیونکہ یہ عالمی سطح پر استعمال ہوتا ہے۔ ڈھیر میموری کو تقسیم کیا گیا ہے نوجوان نسل ، پرانی نسل وغیرہ ، جاوا کچرا جمع کرنے کے بارے میں مزید تفصیلات۔
  • اسٹیک میموری ہے قلیل مدتی جب کہ ایپلی کیشن پر عملدرآمد کے اختتام تک ہیپ میموری میموری سے شروع ہوتا ہے۔
  • ہم استعمال کرسکتے ہیں -ایکس ایم ایکس اور -ایکس ایم ایس اسٹارٹ اپ سائز اور ہیپ میموری کی زیادہ سے زیادہ سائز کی وضاحت کے لئے جے وی ایم آپشن۔ ہم استعمال کرسکتے ہیں -XSS اسٹیک میموری سائز کی وضاحت کرنے کے لئے.
  • جب اسٹیک میموری پوری ہوجاتی ہے ، تو جاوا رن ٹائم پھینک دیتا ہے java.lang.StackOverFlowError اگر اگر ڈھیر کی میموری پوری ہو تو ، وہ پھینک دیتا ہے java.lang.OutOfMemoryError: جاوا ہیپ اسپیسغلطی
  • ہیپ میموری کے مقابلے میں اسٹیک میموری کا سائز بہت کم ہوتا ہے۔ میموری مختص کرنے میں سادگی کی وجہ سے (LIFO) ، اس کے مقابلے میں اسٹیک میموری بہت تیز ہوتی ہےڈھیر میموری

موازنہ چارٹ

پیرامیٹر اسٹیک ڈھیر
بنیادی کونٹیوگس بلاک میں میموری مختص کی گئی ہےمیموری کو بے ترتیب حکم میں مختص کیا جاتا ہے
مختص اور تعطل مرتب کردہ کے ذریعہ خودکارپروگرامر بہ دستی
لاگت کممزید
عمل آوری سختآسان
رسائی کا وقت تیزآہستہ
اہم مسئلہ یادداشت کی قلتمیموری فریگمنٹ
فرق کا مقام عمدہکافی ہے
لچک فکسڈ ریٹنیا سائز ممکن ہے

اس کے ساتھ ، ہم اس 'جاوا میں میموری الاٹیکیشن' ٹیوٹوریل کے اختتام پر پہنچ گئے ہیں۔ مجھے امید ہے کہ آپ نے کچھ اصل وقتی مثالوں کے ذریعے اس تصور اور اس کے نفاذ کو سمجھ لیا ہوگا۔

اب جب آپ سمجھ گئے ہیںجاوا میں میموری الاٹیکشناس 'جاوا میں میموری الاٹیکشن' مضمون کے ذریعے بنیادی باتیں چیک کریں ایڈوریکا کے ذریعہ ، ایک قابل اعتماد آن لائن سیکھنے والی کمپنی جس کی دنیا بھر میں 250،000 سے زیادہ مطمئن سیکھنے والوں کا نیٹ ورک موجود ہے۔ ایڈورکا کا جاوا J2EE اور SOA ٹریننگ اور سرٹیفیکیشن کورسز طلباء اور پیشہ ور افراد کے لئے تیار کیے گئے ہیں جو جاوا ڈویلپر بننا چاہتے ہیں۔ کورس آپ کو جاوا پروگرامنگ میں آغاز فراہم کرنے اور جاوا کے مختلف فریم ورکس جیسے ہیبرنٹیٹ اینڈ ایڈوانس جاوا دونوں اصولوں کے ساتھ ساتھ آپ کو تربیت دینے کے لئے ڈیزائن کیا گیا ہے۔ بہار .

ہمارے لئے ایک سوال ہے؟ اس 'جاوا میں میموری الاٹمنٹ' بلاگ کے تبصرے سیکشن میں اس کا تذکرہ کریں اور ہم جلد از جلد آپ کے پاس واپس آجائیں گے۔