الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Free Memory

بدأه superamh في 19 ديسمبر 2009 · 14 رد · 1,164 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم كيف استطيع اعمل free memory عند الخروج من Jframe الى فريم اخر

dispose لاتعمل

#2
protected void finalize(){
System.gc();
}

Unix is user friendly. It's just selective about who its friends are .

#3
superamh كتب:

السلام عليكم كيف استطيع اعمل free memory عند الخروج من Jframe الى فريم اخر

dispose لاتعمل

كيف عرفت ان dispose لا تعمل؟؟ الغرض الأساسي من هذه الطريقة هو تحرير الموارد المستعملة من طرف الJFrame

EZ.ELDEEN كتب:

protected void finalize(){
System.gc();
}

حتى عند النداء على الطريقة gc، فذلك لا يعني أن الgarbage collector سيمر على الفور. هذه الطريقة تقوم فقط بطلب مرور الgarbage collector، لكنها لا تجبره على المرور.

#4

dispose هو الحل الصحيح

ثم بعد ذلك يتم إزالة كل الروابط عن الكائن JFrame

بعدها يقوم الأخ gc بإزالة الكائن من الذاكرة

لكن لا ضمان لوقت الإزالة

بالمناسبة حتى استخدام الدالة finalize لا يعتمد عليه لأنها يتم مناداتها عند عمل الأخ gc والأخ gc غير مأمون العواقب

تحياتي

1
حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#6

ما المشكلة يا محمد

هل تجرب اسمي في المنتدى :lol:

بالمناسبة أعجبتني الصورة كيف قمت بعملها؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7

هاد سر كيف عملتها، بس القصد منها التحية و التقدير لكل من احبه

#8

تسلم يا محمد باشا :)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#9

اذا انشأت كائن وبعد فترة لم تعد بحاجته اجعله يؤشر على قيمة null.

الدالة finalize ممكن ان تكون خطيرة اذا كانت time-critical مثل الاعتماد عليها لاغلاق الملفات ولأن فتح الملفات limited resource

ممكن أن يؤثر تاخر استدعاء ال finalize على اداء البرنامج فيمتلئ بالكائنات الغير لازمة ولا تستطيع فتح ملفات حينها.

هذا المثال مذكور في كتاب

Effective Java

Item 7:Avoid finalizers

#10

للاسف ياخوان جميع الحلول غير فعاله

لكن

system.exit(0)

تعمل لكنها غير عملية حيث يجب الخروج من البرنامج نهائيا

#11
superamh كتب:

للاسف ياخوان جميع الحلول غير فعاله

لكن

system.exit(0)

تعمل لكنها غير عملية حيث يجب الخروج من البرنامج نهائيا

إذا كنت تتكلم بالألغاز فلن يستطيع أحد مساعدتك.

اشرح المشكلة أكثر وأرنا الكود

#12

اعرض الشيفرة الخاصة بك

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#13
new Thread(new Runnable(){
while(true)
{
try{
System.gc();
Thread.sleep(100);}catch(Exception e){}
}

}).start();
#14
superamh كتب:

السلام عليكم كيف استطيع اعمل free memory عند الخروج من Jframe الى فريم اخر

dispose لاتعمل

أهلاً عبدالله، شوف، دالة الـ Dispose يعتمد وجودها وعملها على الكائن الحاوي لها بينما الـ GC تشمل إدارة الذاكرة عموماً وهي اختصار لـ Garbage Collectors يعني تقدر تقول عمال النظافة:)

الثانية ميزتها انها تستدعى تلقائياً والأولى لازم تستدعيها على كل كائن إلا ان الجافا تتحكم فيها تلقائياً عن طريق الـ GC

إذا أردت أستدعاء اياً فيهم يدوياً، ممكن تستخدم الـ Destructor واللي يحمل نفس إسم الـ Constructor مع tiled كبادئة ~

مثال

private class AMH
{
AMH() //The constructor
{...}

~AMH() //The destructor
{this.GC()}
}

وبالنسبة للدالة Exit الرقم 0 اللي الاخوة حاطينه يعطي إشارة للمعالج أن البرنامج تم الخروج منه بدون أخطاء لأن أي قيمة أخرى ترجع من إنهاء البرنامج غير الصفر تدل على خطأ إستدعى إقفال النظام بشكل غير سليم مع وجود قيم باقية في الذاكرة مما قد يحفز تدخل نظام التشغيل في تنظيف الشوائب العالقة في الذاكرة العشوائية واللي تم تحميلها عبر الثريد الأساسي للنظام Main

تصبح على خير!

تم تعديل هذه المشاركة بواسطة herch في 3 يناير 2010 في 21:34 — السبب: إضافة الوسم [code]

#15

لا وجود للdesctructor في الجافا، ما تتكلم عنه موجود في C++ وليس java

تم تعديل هذه المشاركة بواسطة herch في 3 يناير 2010 في 21:39

مواضيع مشابهة