JavaRush /جاوا بلاگ /Random-SD /جاوا ميموري کي منظم ڪرڻ لاءِ هڪ گائيڊ (۽ توهان جو ڪوڊ محف...
pandaFromMinsk
سطح
Минск

جاوا ميموري کي منظم ڪرڻ لاءِ هڪ گائيڊ (۽ توهان جو ڪوڊ محفوظ ڪرڻ)

گروپ ۾ شايع ٿيل
مترجم جو نوٽ: نوٽ جو ترجمو ڪرڻ جي خواهش هڪ جون جي صبح سوير هڪ سب وي ڪار ۾ اڌ ننڊ ۾ پڙهڻ کانپوءِ ظاهر ٿي. ٽارگيٽ سامعين: اهي ماڻهو جيڪي جاوا جي دنيا ۾ پنهنجا پهريون قدم کڻي رهيا آهن ۽، انهن جي بنيادي فني پس منظر يا خواهش جي فطرت جي ڪري، جاوا جي هود هيٺ اچڻ ۽ سڀني ”اليڪٽروڊينامڪ“ عملن کي سکڻ جا ڏاڍا شوقين آهن. مون کي پڪ آهي ته انهن لاءِ جيڪي هن کي پڙهندا آهن، اهو JVM ۽ GC کي ترتيب ڏيڻ جي دنيا ۾ سفر لاءِ شروعاتي نقطو هوندو. صاف هوا! اصل مضمون هتي هڪ ڊولپر جي حيثيت ۾، توهان جاوا ايپليڪيشن مان ڪيڙا صاف ڪرڻ ۽ ڪارڪردگي حاصل ڪرڻ ۾ بيشمار ڪلاڪ گذاريو جتي اهو ٿيڻ گهرجي. جاچ دوران، توهان نوٽيس ڪيو ته ايپليڪيشن آهستي آهستي هلندي آهي، ۽ آخر ۾ اهو مڪمل طور تي حادثو يا صرف خراب ڪارڪردگي ڏيکاري ٿو. آخرڪار قبول ڪيو ته ميموري ليڪ ٿئي ٿي. گند ڪچري جو ڪليڪٽر جاوا انهن ليڪس سان معاملو ڪرڻ لاء بهترين ڪم ڪري ٿو. پر اتي ڪيتريون ئي شيون آهن جيڪي ڪري سگهجن ٿيون جڏهن اهڙين حالتن کي منهن ڏيڻ. توھان کي طريقن جي ضرورت آھي ميموري ليڪ ڪالن کي سڃاڻڻ، سببن جي سڃاڻپ ڪرڻ، ۽ جاوا گاربيج ڪليڪٽر جي ڪردار کي سمجھڻ جي مجموعي ايپليڪيشن ڪارڪردگي کي متاثر ڪرڻ ۾.

جاوا ميموري ليڪس جي مکيه علامات

اتي ڪيترائي علامتون آھن جيڪي ظاھر ڪن ٿيون ته ايپليڪيشن ۾ ميموري ليڪ مسئلا آھن. ڪارڪردگي ۾ ٿورڙي گهٽتائي، اوچتو ايپليڪيشن جي ناڪامي جي بدران، صرف ميموري ليکڪ کي اشارو ڪري ٿو. مسئلو هر وقت ٿي سگهي ٿو آپريشن دوران يا صرف تڏهن جڏهن ايپليڪيشن وڏي مقدار ۾ ڊيٽا سان ڪم ڪرڻ شروع ڪري يا، ان جي برعڪس، توهان ايپليڪيشن کي اسڪيل ڪرڻ شروع ڪيو. ايپليڪيشن شايد ميموري جي غلطي کي ظاهر ڪندي هڪ ڀيرو هڪ ڀيرو ليڪ سڀني موجود ميموري وسيلن کي استعمال ڪري چڪو آهي. جيڪڏهن توهان اپليڪيشن کي ٻيهر شروع ڪيو ۽ بهترين جي اميد رکو ٿا، توهان کي بار بار حادثن سان منهن ڏيڻو پوندو جيستائين ليڪ مقرر نه ڪيو وڃي. عام طور تي، ميموري ليڪ ٿئي ٿي جڏهن اعتراض جا حوالا ميموري کي آزاد ڪرڻ جي بدران جمع ٿين ٿا. اهي سڀئي موجود ياداشتن تي قبضو ڪن ٿا ۽ ان کي ناممڪن بڻائين ٿا ايپليڪيشن لاءِ وسيلن تائين رسائي حاصل ڪرڻ لاءِ ان جي ضرورت آهي.

ميموري لڪ جي طور تي ظاهر ٿيڻ واري ترتيب جي غلطي

ان کان اڳ جو توھان انھن حالتن تي نظر رکون جيڪي جاوا ياداشت جي مسئلن جو سبب بڻجن ۽ ھڪڙو تجزيو ڪن، توھان کي پڪ ڪرڻ جي ضرورت آھي ته تحقيق مڪمل طور تي مختلف مسئلي سان لاڳاپيل نه آھي. ڪجهه ميموري کان ٻاهر جون غلطيون مختلف غلطين جي ڪري ٿينديون آهن، جهڙوڪ ترتيب جي غلطي. ايپليڪيشن هيپ ميموري تي گهٽ ٿي سگهي ٿي يا سسٽم تي ٻين ايپليڪيشنن سان تڪرار ٿي سگهي ٿي. جيڪڏهن توهان گهٽ ياداشت جي مسئلن جي باري ۾ ڳالهائڻ شروع ڪيو پر اهو معلوم نه ڪري سگهيا ته ليڪ جو سبب ڇا آهي، ايپليڪيشن تي هڪ مختلف نظر وٺو. توھان کي معلوم ٿيندو ته توھان کي حتمي شڪل ڏيڻ واري سلسلي ۾ تبديليون ڪرڻ جي ضرورت آھي يا مستقل نسل جي جڳھ جي مقدار کي وڌائڻ جي ضرورت آھي، جيڪو جاوا ڪلاس جي تفصيلن ۽ ڪجھ اضافي ڊيٽا کي محفوظ ڪرڻ لاءِ JVM ميموري جو ھڪڙو علائقو آھي.

ميموري مانيٽرنگ اوزار جا فائدا

ياداشت جي نگراني جا اوزار جاوا ايپليڪيشن جي دستياب وسيلن جي استعمال ۾ وڌيڪ نمائش فراهم ڪن ٿا. هن سافٽ ويئر کي استعمال ڪندي، توهان ميموري ليڪ ۽ ٻين ڪارڪردگي جي واقعن جي مسئلي جي روٽ جي ڳولا کي تنگ ڪرڻ جي طرف هڪ قدم کڻندا. اوزار ڪيترن ئي ڀاڱن ۾ اچن ٿا، ۽ توهان کي مختلف قسم جي ايپليڪيشنن کي استعمال ڪرڻ جي ضرورت پوندي ته ڪيئن صحيح طريقي سان مسئلي کي پرچم ڪرڻ ۽ ڇا غلط ٿيو، جيتوڻيڪ جيڪڏهن توهان ميموري لڪ سان معاملو ڪري رهيا آهيو. هيپ ڊمپ فائلون جاوا ميموري جي تجزيي لاءِ ضروري معلومات مهيا ڪن ٿيون. انهي حالت ۾، توهان کي ٻه اوزار استعمال ڪرڻ جي ضرورت آهي: هڪ ڊمپ فائل ٺاهڻ لاء ۽ ٻيو تفصيلي تجزيو لاء. هي حل تفصيلي ڄاڻ ڏئي ٿو ته ايپليڪيشن سان ڇا ٿي رهيو آهي. هڪ دفعو اوزار ممڪن مسئلن جي جڳهن جي نشاندهي ڪري ٿو ۽ واقعي جي صحيح جڳهه کي ڳولڻ لاء علائقي کي تنگ ڪرڻ لاء ڪم ڪري ٿو. ۽ وقت جو اهو دور آزمائشي ۽ غلطي جو سڀ کان ڊگهو ۽ سڀ کان وڌيڪ اداس ڪندڙ حصو آهي. ميموري تجزيه ڪندڙ توهان جي ڪوڊ ۾ ڪيترن ئي مسئلن کي اشارو ڪري ٿو، پر توهان بلڪل پڪ ناهي ته توهان جي ايپليڪيشن کي ڪهڙي مشڪلاتن جو سامنا آهي. جيڪڏهن توهان اڃا تائين ساڳئي غلطي سان منهن ڪيو، ٻيهر شروع ڪريو ۽ ٻي ممڪن غلطي تي ڪم ڪريو. ھڪڙي وقت ۾ ھڪڙي تبديلي ڪريو ۽ غلطي کي نقل ڪرڻ جي ڪوشش ڪريو. توهان کي ضرورت پوندي ته ايپليڪيشن کي ڪجهه وقت تائين هلائڻ جي غلطي جي حالتن کي نقل ڪرڻ لاءِ. جيڪڏهن پهرين ٽيسٽ دوران ميموري ليڪ آهي، پڪ ڪريو ته ايپليڪيشن کي لوڊ ڪريو. هڪ ايپليڪيشن ٿوري ڊيٽا سان ٺيڪ ڪم ڪري سگهي ٿي، پر وڏي مقدار ۾ ڊيٽا سان ڪم ڪرڻ وقت وري ساڳيا غلطيون اڇلائي سگھي ٿي. جيڪڏهن ساڳي غلطي اڃا به ٿئي ٿي، توهان کي ٻيهر شروع ڪرڻ ۽ ٻيو ممڪن سبب ڳولڻ جي ضرورت آهي. ميموري مانيٽرنگ ٽولز ان جي افاديت ثابت ڪن ٿا جڏهن ايپليڪيشن مڪمل طور تي هلندي آهي. توهان دور دراز سان JVM ڪارڪردگي مانيٽر ڪري سگهو ٿا ۽ ناڪامي جي حالتن کي فعال طور تي ڳولي سگهو ٿا ان کان اڳ جو هڪ ڊولپر مسئلي ۾ ٻڏي ٿو ۽ مستقبل ۾ انهن جي پروگرامنگ ٽيڪنڪ کي بهتر ڪرڻ ۾ مدد لاءِ تاريخي ڪارڪردگي ڊيٽا گڏ ڪري ٿو ۽ ڏسو ته جاوا ڪيتري بوجھ هيٺ ڪم ڪري ٿو. ڪيترن ئي حلن ۾ "خطري" الرٽ موڊس يا ٻيا ساڳيا طريقا شامل آھن ته جيئن ڊولپر کي فوري طور تي معلوم ٿي سگھي ته ڇا غلط ٿي رھيو آھي. هر ڊولپر هڪ نازڪ ايپليڪيشن نه ٿو چاهي، جڏهن پيداوار ۾، حادثو ٿئي ۽ ايپليڪيشن ڊائون ٽائم دوران ڏهن يا سوين هزارين ڊالرن جو نقصان ٿئي، تنهن ڪري ميموري مانيٽرنگ ٽولز ڊولپر جي جوابي وقت کي گهٽائي ڇڏيندا آهن. ميموري مانيٽرنگ ايپليڪيشنون توهان کي ڪسٽمر ڏانهن وڃڻ لاءِ پڇڻ جي بجاءِ فوري طور تي تشخيصي عمل کي شروع ڪرڻ جي اجازت ڏين ٿيون، جتي ڪو به توهان کي اهو نه ٻڌائيندو ته ڪهڙي غلطي ٿي آهي يا ڪهڙي ايرر ڪوڊ ايپليڪيشن ٺاهي آهي. جيڪڏهن توهان اڪثر پاڻ کي پنهنجي جاوا ايپليڪيشن جي ياداشت ۽ ڪارڪردگي جي مسئلن ۾ غرق محسوس ڪندا آهيو، جانچ جي عمل ۾ هڪ گہرے غوطه وٺو. ترقي جي عمل ۾ هر ڪمزور علائقي جي سڃاڻپ ڪريو ۽ پنھنجي جاچ واري حڪمت عملي کي تبديل ڪريو. ساٿين سان صلاح ڪريو ۽ موجوده بهترين طريقن سان توهان جي جاچ واري طريقن جو مقابلو ڪريو. ڪڏهن ڪڏهن توهان کي ڪوڊ جو هڪ ننڍڙو ٽڪرو نظر ثاني ڪرڻ جي ضرورت آهي ۽ پوء يقيني بڻائين ته پوري ايپليڪيشن تي مستقل اثر.

جاوا ميموري ۽ ميموري ليڪس تي گاربيج ڪليڪٽر جو ڪردار

جاوا ۾ گاربيج ڪليڪٽر ايپليڪيشن جي ڪارڪردگي ۽ ياداشت جي استعمال ۾ اهم ڪردار ادا ڪري ٿو. اهو غير استعمال ٿيل (مردار) شيون ڳولي ٿو ۽ انهن کي حذف ڪري ٿو. اهي شيون هاڻي ياداشت تي قبضو نه ڪندا آهن، تنهنڪري توهان جي ايپليڪيشن وسيلن جي دستيابي کي يقيني بڻائي ٿي. ڪڏهن ڪڏهن ايپليڪيشن GC کي مئل شين کي هٽائڻ لاءِ ڪافي وقت يا وسيلا نٿي ڏئي ۽ اهي گڏ ٿين ٿا. توهان شايد اهڙي صورتحال کي منهن ڏئي سگهون ٿا جتي اتي موجود شيون تائين فعال رسائي آهي جنهن کي توهان يقين ڪيو آهي ته مري ويا آهن. ڪچرو گڏ ڪندڙ ان حوالي سان ڪجھ به نه ٿو ڪري سگهي ڇو ته... ان جو خودڪار ميموري مئنيجمينٽ ميڪانيزم فعال شين کي پاس ڪري ٿو. عام طور تي ڪچرو ڪليڪٽر خودمختاري سان هلندي آهي، پر توهان کي سخت ياداشت جي مسئلن جو جواب ڏيڻ لاء ان جي رويي کي ترتيب ڏيڻ جي ضرورت آهي. بهرحال، GC پاڻ ڪارڪردگي مسئلا پيدا ڪري سگهي ٿي.

جي سي ايريا

ڪچرو جمع ڪندڙ شين کي مختلف علائقن ۾ جدا ڪري ٿو اسيمبليءَ کي بهتر ڪرڻ لاءِ. ينگ جنريشن ۾ اهي شيون آهن جيڪي جلدي ختم ٿي وينديون آهن. ڪچرو گڏ ڪندڙ اڪثر هن علائقي ۾ ڪم ڪندو آهي جڏهن کان هن کي صاف ڪرڻو آهي. اهي شيون جيڪي هڪ خاص دور تائين پهچڻ کان پوءِ زنده رهنديون آهن پراڻي نسل ڏانهن منتقل ڪيون وينديون آهن. پراڻي نسل واري علائقي ۾، شيون گهڻي وقت تائين رهنديون آهن ۽ ڪليڪٽر طرفان اڪثر نه هٽايو ويندو آهي. بهرحال، جڏهن ڪليڪٽر دائري ۾ هلي رهيو آهي، ايپليڪيشن هڪ وڏي آپريشن جي ذريعي وڃي ٿي جتي ڪليڪٽر ڪچري کي صاف ڪرڻ لاء زنده شين جي ذريعي ڏسي ٿو. نتيجي طور، ايپليڪيشن شيون آخري مستقل نسل واري علائقي ۾ واقع آهن. عام طور تي، انهن شين ۾ ضروري JVM ميٽاداٽا شامل آهن. ايپليڪيشن مستقل نسل ۾ گهڻو گندگي پيدا نٿو ڪري، پر ڪلاس کي هٽائڻ لاء ڪليڪٽر جي ضرورت آهي جڏهن ڪلاس جي وڌيڪ ضرورت ناهي.

گندگي ڪليڪٽر ۽ جوابي وقت جي وچ ۾ تعلق

ڪچرو ڪليڪٽر، ايپليڪيشن جي سلسلي جي عملدرآمد جي ترجيح کان سواء، مڪمل ٿيڻ جو انتظار ڪرڻ کان سواء، انهن کي روڪي ٿو. هن رجحان کي سڏيو ويندو آهي "دنيا کي روڪيو" واقعي. ينگ جنريشن واري علائقي جي گاربيج ڪليڪٽر جي ڪارڪردگي تي معمولي اثر آهي، پر جيڪڏهن GC سخت صفائي ڪري رهيو آهي ته مسئلا قابل ذڪر آهن. توهان هڪ اهڙي صورتحال ۾ ختم ٿي ويندا آهيو جتي نوجوان نسل مائنر GC مسلسل هلندي رهي آهي يا پراڻي نسل هڪ غير ڪنٽرول حالت ۾ وڃي ٿي. اهڙي صورتحال ۾، توهان کي ڪارڪردگي سان نوجوان نسل جي تعدد کي توازن ڪرڻ جي ضرورت آهي جيڪا هن ڪليڪٽر ايريا جي سائيز کي وڌائڻ جي ضرورت آهي. ڪچري جي ڪليڪٽر جي مستقل نسل ۽ پراڻي نسل جي علائقن ۾ ايپليڪيشن جي ڪارڪردگي ۽ ياداشت جي استعمال تي هڪ اهم اثر آهي. ڪچري جي صفائي جو هي وڏو عمل مئل شين کي ٻاهر ڪڍڻ لاءِ ڍير مان گذري ٿو. اهو عمل هڪ معمولي تعمير کان وڌيڪ وقت وٺندو آهي ۽ ڪارڪردگي جو اثر گهڻو وقت وٺي سگھي ٿو. جڏهن ڇڪڻ جي شدت تمام گهڻي آهي ۽ پراڻي نسل واري علائقي جي سائيز وڏي آهي، سڄي ايپليڪيشن جي ڪارڪردگي "دنيا کي روڪيو" واقعن جي ڪري دٻجي ويندي آهي. ڪچري کي گڏ ڪرڻ کي بهتر ڪرڻ لاءِ مانيٽرنگ جي ضرورت آهي ته پروگرام ڪيتري وقت هلايو وڃي ٿو، مجموعي ڪارڪردگي تي اثر پوي ٿو، ۽ نگراني جي تعدد کي گهٽائڻ لاءِ ايپليڪيشن سيٽنگ کي ڪيئن ترتيب ڏيو. توهان کي شايد هڪ ئي شئي جي سڃاڻپ ڪرڻ جي ضرورت پوندي جيڪا هڪ کان وڌيڪ ڀيرا رکيل هجي بغير ايپليڪيشن کي پاڻ کي جاءِ تان هٽائڻ کان سواءِ، يا توهان کي شايد اهي ڪمپريشن پوائنٽ ڳولڻ جي ضرورت پوندي جيڪي سڄي سسٽم کي پوئتي رکي رهيا آهن. صحيح توازن حاصل ڪرڻ لاءِ ضروري آهي ته CPU لوڊ کان وٺي توهان جي گاربيج ڪليڪٽر سائيڪل تائين هر شيءِ تي ڌيان ڏيڻ گهرجي، خاص طور تي جيڪڏهن نوجوان ۽ پراڻي نسل غير متوازن آهن. ميموري ليڪ کي ايڊريس ڪرڻ ۽ ڪچري کي گڏ ڪرڻ کي بهتر ڪرڻ جاوا ايپليڪيشن جي ڪارڪردگي کي بهتر بنائڻ ۾ مدد ڪري ٿي. توھان لفظي طور تي گھڻا ھلندڙ حصا جاگنگ ڪري رھيا آھيو. پر درست مشڪلاتن کي حل ڪرڻ واري طريقي سان ۽ تجزياتي اوزار جيڪي سخت نمائش مهيا ڪرڻ لاء ٺهيل آهن، توهان سرنگ جي آخر ۾ روشني تائين پهچندا. ٻي صورت ۾، توهان ڪارڪردگي سان لاڳاپيل مسئلن کان متاثر ٿيندا. محتاط ياداشت جي جڳهه ۽ نگراني جاوا ايپليڪيشن ۾ اهم ڪردار ادا ڪن ٿا. توهان کي پنهنجي ايپليڪيشن کي بهتر ڪرڻ ۽ يادگيري کان ٻاهر جي غلطين کان بچڻ لاءِ ڪچرو گڏ ڪرڻ، اعتراض جي نيڪال، ۽ ڪارڪردگيءَ جي وچ ۾ رابطي جو پورو ڪنٽرول وٺڻ جي ضرورت آهي. مانيٽرنگ جا اوزار توهان کي امڪاني مسئلن جي چوٽي تي رهڻ ۾ مدد ڏين ٿا ۽ يادداشت جي استعمال جي رجحانن کي نمايان ڪن ٿا ته جيئن توهان مشڪلاتن کي حل ڪرڻ لاءِ فعال انداز اختيار ڪريو. ميموري ليڪس اڪثر ڪري معمولي طريقي سان مشڪلاتن کي حل ڪرڻ جي غير موثريت کي ڏيکاري ٿو، خاص طور تي جيڪڏهن توهان کي غلط ترتيب واري پيٽرولر جي قيمتن سان منهن ڏيڻو پوي ٿو، پر ياداشت سان لاڳاپيل مسئلن کي حل ڪرڻ ۾ توهان جي مدد ڪري سگهي ٿي جلدي واقعن کان بچڻ ۾ جيڪي توهان جي رستي ۾ بيٺا آهن. جاوا ميموري ٽيوننگ ۽ GC جي تڪميل توهان جي ترقي جي عمل کي تمام آسان بڻائي ٿي.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION