آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آیا استفاده از متغیرها و متد های استاتیک ، حافظه ی رم را اشغال می کند ؟

kazemian  8 سال پیش  8 سال پیش
+3 0

سلام بچه ها
میخواستم بدونم آیا استفاده از متغیرها و متد های استاتیک ، حافظه ی رم را اشغال می کنه ؟

اگه پاسختون مثبت هست ، توی آموزش طراحی فریم ورک اختصاصی شاهد این بودیم که استاد متدها و متغیرها رو به صورت استاتیک تعریف می کردند، آیا این عمل مشکلی پیش نمیاره؟


0 0
بچه ها کسی نظری نداره عایا ؟ (8 سال پیش)
0 0
از دست این اسپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپپم (8 سال پیش)
+1 0
وقتی شما متغیری تعریف میکنید یعنی دارید یک داده ای رو در حافظه ای نگه داری میکنید که ازش در برنامتون استفاده کنید... متد ها و متغیر های استاتیک یکی از تفاوت هایی که با متد ها و متغیر های غیراستاتیک دارن اینه که برای استفاده از اونا نیازی به ساخت شی ء نیست و همینکه پروسس برنامه اجرا بشه اونا توی حافظه وجود دارن! (8 سال پیش)
+1 0
ممنونم ک جوابم رو دادین خب توی کلاس G یا همون Base ما متغیر ها و تابع هایی رو که تعریف میکنیم معمولا به صورت استاتیک هستند ، چطور این مسئله باعث مشکلی نمیشه ؟ (8 سال پیش)
+3 -1
این متغیر هایی که ما تو کلاس base میسازیم واقعا نباید بیشتر از ۶ ۷ تا باشن. چون این متغیر های استاتیک در حین بالا اومدن برنامه ساخته میشن و روی حافظه باقی میمونن این امر تو دراز مدت باعث افت کیفیت محصول میشه و حتی امکان داره به خود گوشی هم ضرر بزنه واسه ی همینه که من سعی میکنم از کلاس base و حتی فریم ورکی که آقای آقاجانی آموزش دادن استفاده نکنم (8 سال پیش)
+2 0
مهمترین چیزی که در این کلاس هست و آقای آقاجانی اول از همه ازش تو آموزشها استفاده کردند این هست که context را اونجا استاتیک تعریف میکنند. این را حتی خود اندروید استدیو هم بهش گیر میده که مشکل پرفورمانس داره. میشه یکی از دوستان یا خود آقای آقاجانی علتش را توضیح بدهند که چرا چنین کاری را توصیه کردند؟ (8 سال پیش)
+1 0
پاسخ کاربر صبا : بله درست متوجه شدید! معمولا آبجکت های از نوع Context بسیار سنگین هستند و نگهداری اونها در حافظه بسیار پرهزینه!! اصولا توصیه میشه که هیچ رفرنسی ( چه استاتیک چه غیراستاتیک) به ابجکت های Context ،{ زمانیکه به اونها نیازی ندارید} نگه ندارید.دلیلشم اینه که با اینکار GC ( garbage collector) نمیتونه آبجکت هایی که رفرنس فعال دارن رو از حافظه پاک کنه...{{ اگر لازم دیدید که رفرنس استاتیک به context یا activity و... نگه دارید ، حتما دقت کنید زمانیکه دیگه نیازی به اون رفرنس ندارید اون رو برابر null قرار بدید تا GC بتونه منابع آبجکتی که بهش اشاره داشتید رو جمع آوری کنه...}} (8 سال پیش)
0 0
پاسخ کاربر هادی قربانی : با قسمت اول صحبتتون مخالفم! قانون نیست که بگه شما کلا توی برنامتون بهترِ 6 تا متغیر استاتیک داشته باشید یا مثلا 9 تا یا 10 تا !! میزان حافظه ای که این متغیرها اشغال میکنن کاملا به نوعشون بستگی داره و در صورتیکه برنامه نویس بتونه خوب مدل برنامشو پیاده کنه و به مدیریت منابع بخصوص حافظه توجه داشته باشه فک نمیکنم محدودیتی در تعریف متغیرهای استاتیک داشته باشه!! البته اگه منظورتون این بوده که تا حدامکان از تعریفشون خودداری بشه ، باهاتون موافقم!! (8 سال پیش)
0 0
ضمنا استفاده از کلاس App یا همون که شما میگین Base یا هر اسم دیگه ای... میتونه خیلی مفید باشه توی پروژه هاتون .. در مورد فریموورک استاد آقاجانی با وجود اینکه کامل بررسی نکردم ولی به نظر راه دست و منطقی طراحی کردن ( شما میتونید فریموورک اختصاصی خودتون رو بنویسید که باهاش راحت تر باشید ولی توصیه میکنم موارد convention رو دَرِش رعایت کنید...) (8 سال پیش)
0 0
پاسخ کاربر کاظمیان : فک کنم یجورایی توی جوابای بالام به سوال شمام جواب دادم :)) (8 سال پیش)
0 0
متاسفانه من هنوز قانع نشدم ،وقتی استفاده از متغیر های استاتیکی مثل context به قول شما میتونه انقد پرهزینه !!! باشه چه لزومی به استفاده به این شکل داره ،و مزیت استفادش چقد میتونه مفید باشه که معایبش رو پوشش بده.همچنین سایز متغیرهای استاتیک که در تصویر بالا مشاهده می کنید (8 سال پیش)
+2 0
دوست عزیز آخر سر نتیجه مون این شد که بهتره از تعریف همچین متغیر هایی در کلاس اپلیکیشن خود داری بکنید(حدالامکان) (8 سال پیش)
+1 0
شما گفتید واقعا نباید از اون تعداد بیشتر باشه... من گفتم که اینطور نیست و بستگی به نیاز و مدل پروژتون داره.... (8 سال پیش)
+1 -1
آقای کاظمیان : نسخه کلی وجود نداره برای سوال شما! لزوم استفاده اش گاهی به پروژه و مدل کدنویسی شما بستگی داره.. تاجاییکه میتونید استفاده نکنید ولی اگه کردید مدیریتش کنید.... (8 سال پیش)
+3 0
فیلدهایی که دورشون مستطیل نارنجی وارنینگ زده رو من خودم به شخصه این مدلی استفاده نمیکنم.. استاد این مدلی استفاده میکنن.. ایرادیم نداره و کارتون رو یه جاهایی میتونه راحت ترم بکنه.... اگه استفاده کردید جاییکه نیازی ندارید آزادش کنید ( مثلا currentActivity رو در onDestroy اکتیویتیاتون برابر null قرار بدید و...) (8 سال پیش)
+1 0
خب الان من توی برنامه هام که دیتا بیس دارن نام تمام متغییرهای دیتابیس رو استاتیک تعریف میکنم(یه برنامه تقریبا 16 تا جدول داره برای من) و خب تعداد این متغییرهای استاتیک من خیلی زیاد هستش. راه حل چیه ؟ کلا این نوع تعریف کردن رو کنار بذارم یا اینکه راهی برای NULL کردن این متغییر ها هستش؟ (8 سال پیش)
0 0
هر کس ییه مدل برای برنامه نویسیش داره./ من از اول کارمم روی مصرف حافظه حساس بودم و خودمو محدود کرده بودم و الانم محدود کردم که نباید ۵ ۶ تا متغیر استاتیک مهم و واجب روی حافظه بمونن و یا حدالامکان استفاده نشن وگرنه درسته باب ناز هرکس در هر پروژه فرق میکنه (8 سال پیش)
+2 0
من سالهاست که برنامه نویسی می کنم و تو برنامه هام هم 100 تا متغیر استاتیک دارم و مدل های آموزشی هم که دیدم همینطور بوده، تو گوشی های امروزی با چند گیگ رم شما دارید از چند بایت یا نهایت کیلو بایت استفاده می کنید که اونم موقع بستن برنامه از بین می رن! فکر نکنم اینقدر وسواس نیاز باشه (8 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .