دوست عزیز : kobari
ضمن تشکر از لطف شما :
1-بد نیست یاداوری کنم یک مشکل دیگه gc در کار با حافظه اینه که گاهی سرعت ایجاد اشیائ جدید به قدری بالاست که قبل از اینکه فرصت برای پاکسازی پیش بیاد Heap کاملا پر میشه!
2-یه راه میتونه این باشه :
*)فرض کنید جدول شما در یه کادر 640*480 نمایش داده میشه و در این حالت حدود 50 سطر نمایش داده میشه.(یک صفحه)
*)میتونید محاسبه کنید که تعداد کل سطر ها چقدره.و چند صفحه میشه.مثلا 3000 صفحه!
*)با پرو فایلر چک کنبد که لود کردن چند صفحه در حد اقل heap مورد نظر شما مثلا 200 مگابایت حافظه رو با مشکل مواجه نمی کنه.فرض میکنیم با 500 صفحه هیچ مشکلی پیش نمیاد.
*)حالا باید یه ریسمان راه اندازی کنید .و یک بافر بسازید.اندازه بافر به اندازه 500 صفحه باید باشه(میتونید با عملگر sizeof استفاده کنید )وظیفه ریسمان به این شکله که وقتی کاربر در جدول شما اسکرول میکنه داده های بافر رو از دیتا بیس در حدود بالایی و پایینی نمایه 800*600 پیکسلی شما از دیتابیس بخونه و در بافر 500 صفحه ای بذاره!
اینطور میتونید تضمین کنید که برنامه با حد اقلی که مورد نظر شماست کار میکنه.
*)در نهایت هم میتونید باتست بیشتر کاری کنید که برنامه بتونه با توجه به heap سایز بزرگتر تعداد صفحات بیشتری رو در بافر بارگذاری کنه.
این ایده کاره.بنده این کارو در یه برنامه imaging تجربه کردم.در اون جا مشکلی که داشتم بار کردن فایل های سکئنس دایکام با حجم حدود 10 تا 600 مگابایت در ram با ظرفیت 2 گیگا بایت بود.
راه حل های دیگری هم هست.مثل OSCach:
http://www.opensymphony.com/oscache/.
موفق باشید.