আইফোন ওএস মেমরি সতর্কতা। বিভিন্ন স্তরের অর্থ কী?


85

আইফোন ওএস ডিভাইসে মেমরি পরিচালনা করার কালো শিল্প সম্পর্কিত: মেমরির বিভিন্ন সতর্কতার বিভিন্ন স্তরের অর্থ কী। স্তর 1? স্তর 2? ডায়াল 11 এ যায়?

প্রসঙ্গ: আইপড মিউজিক প্লেয়ার অ্যাপ্লিকেশনটি চালিয়ে আমার আইপ্যাড অ্যাপ চালানো সহ এক বিশাল মেমরি স্ট্রেস টেস্টিং সময়কালের পরে, আমি যে এলোমেলো তবুও বিরল তবুও মেমরির সতর্কতাগুলি পাচ্ছি তা উপেক্ষা করতে আগ্রহী। আমার অ্যাপ কখনই ক্রাশ হয় না । কখনও। আমার অ্যাপটি ফাঁস মুক্ত। এবং, ভাল, মেমস সতর্কতাগুলি কোনও বিষয় বলে মনে হচ্ছে না।

ধন্যবাদ,
ডগ

উত্তর:


98

মূলত সতর্কতাগুলির অর্থ হ'ল ডিভাইসটি স্মৃতিতে কম চলছে এবং এটি, "আপনি যদি কিছু স্মৃতি মুক্ত করতে পারেন তবে আপনি সক্রিয়ভাবে ব্যবহার করছেন না যে এটি স্ফীত হতে পারে ! " ! যদি আপনার মেমরি পরিচালনাটি কঠোর হয় এবং আপনার কাছে এমন কোনও বস্তু নেই যা ব্যবহারিকভাবে বাতিল করা যেতে পারে তবে কেবল বার্তাটি পাশ করুন এবং এটিকে উপেক্ষা করুন।


25
LOL "আপনি যদি কিছু স্মৃতি মুক্ত করতে পারেন তবে আপনি সক্রিয়ভাবে ব্যবহার করছেন না যে এটি ফুলে উঠবে!" অমূল্য ;-) চিয়ার্স
দুগলা

15
আপনি আইফোন ওএস ওয়াক-এ-মোল মেমরি ডান্সের গ্রিসল্ড প্রবীণের মতো শোনাচ্ছেন।
দুগলা

193

মেমরি স্তরের সতর্কতাগুলি স্প্রিংবোর্ড দ্বারা লগ করা হয়। অ্যাপ্লিকেশন বিকাশকারী হিসাবে আপনার এটিকে যত্ন নেওয়ার দরকার নেই। কেবলমাত্র সাড়া দেওয়া -{application}didReceiveMemoryWarningযথেষ্ট।


সতর্কতার 4 টি স্তর (0 থেকে 3) রয়েছে। এগুলি কার্নেল মেমরির প্রহরী থেকে সেট করা আছে এবং না -জনসাধারণের ক্রিয়াকলাপOSMemoryNotificationCurrentLevel() দ্বারা এটি পাওয়া যায়

typedef enum {
    OSMemoryNotificationLevelAny      = -1,
    OSMemoryNotificationLevelNormal   =  0,
    OSMemoryNotificationLevelWarning  =  1,
    OSMemoryNotificationLevelUrgent   =  2,
    OSMemoryNotificationLevelCritical =  3
} OSMemoryNotificationLevel;

কীভাবে স্তরগুলি ট্রিগার করা হয় তা নথিভুক্ত করা হয় না। স্প্রিংবোর্ড প্রতিটি মেমোরি স্তরে নিম্নলিখিতগুলি করতে কনফিগার করা হয়:

  1. সতর্কতা (স্বাভাবিক নয়) - পুনরায় চালু করা বা অযৌক্তিক পটভূমির অ্যাপ্লিকেশন যেমন মেলকে পুনরায় আরম্ভ করা বা বিলম্ব করা।
  2. তাত্ক্ষণিক - সমস্ত পটভূমি অ্যাপ্লিকেশন, যেমন সাফারি এবং আইপড প্রস্থান করুন।
  3. সমালোচনামূলক এবং এর বাইরে - কার্নেলটি গ্রহণ করবে, সম্ভবত স্প্রিংবোর্ডকে হত্যা করবে বা পুনরায় বুট করবে।

সক্রিয় অ্যাপ্লিকেশন (জেটসাম) হত্যা স্প্রিংবোর্ড দ্বারা পরিচালিত হয় না তবে launchd


এর জন্য ধন্যবাদ. এই প্রশ্নে আপনার এবং কৌতুক অভিনেতা উইলিয়ামের মধ্যে টস হয়েছিল। হাস্যরস জিতল। চিয়ার্স
দুগলা

হাই, আমি একই সমস্যা আছে। 5 বারের বেশি সময় ধরে অবিচ্ছিন্নভাবে অ্যাপ্লিকেশন চালানোর পরে, আমি মেমরির সতর্কতা পেয়েছি। স্তর = 20 বার জন্য 1, কিন্তু অ্যাপ্লিকেশন ক্র্যাশ হয় না। তবে আমি যখন এই বার্তাটি পাই তখন মেমরির সতর্কতা পেলাম। স্তর = 2 আমার অ্যাপ্লিকেশন ক্রাশ হচ্ছে। লেভেল 2 প্রায় 20 বার উপস্থিত হওয়ার পরে লেভেল 1 প্রদর্শিত হচ্ছে। আমি কীভাবে আমার অ্যাপ্লিকেশনটিকে ক্র্যাশ না করতে পারি। আপনাকে ধন্যবাদ
শ্রীকান্ত রঙ্গালী

4
@ কেনি: কম মেমরির অর্থ, আমরা সর্বোচ্চ কতটা ব্যবহার করতে পারি। আমাদের লাইভ বাইট কতটা থাকতে পারে। আমার ক্র্যাশ লগে আমি এটি পেয়েছি। ফ্রি পৃষ্ঠাগুলি: 371 তারযুক্ত পৃষ্ঠাগুলি: 12192 স্বচ্ছযোগ্য পৃষ্ঠা: 0 বৃহত্তম প্রক্রিয়া: ডিটিমোবাইলিস এর অর্থ কী? আমার কোথায় যত্ন নেওয়া উচিত? ধন্যবাদ.
শ্রীকান্ত রঙ্গালী


@ ক্যানিটিএম: আইওএস 8 দিয়ে কি এটি এখনও সম্ভব? আমি দেখেছি যে ফাংশনটি সংজ্ঞায়িত হয়েছে libsystem_c.dylib। আমি যদি এগিয়ে গিয়ে এটি ব্যবহার করতে পারি তবে দুর্দান্ত হবে। ধন্যবাদ
ফোকাস

12

OSMemoryNotifications.h থেকে ,

/*
** Threshold values for notifications
*/

typedef enum {
    OSMemoryNotificationLevelAny      = -1,
    OSMemoryNotificationLevelNormal   =  0,
    OSMemoryNotificationLevelWarning  =  1,
    OSMemoryNotificationLevelUrgent   =  2,
    OSMemoryNotificationLevelCritical =  3
} OSMemoryNotificationLevel;

টোটোয়াল 5 স্তরের মেমরি সতর্কতা (-1,3)।

মেমোরি স্তরের সতর্কতার বিবরণ সম্পর্কিত, @ কেনেনিটিএম এর উত্তরটি দুর্দান্ত।

আমি বেশ কয়েকটি সম্পর্কিত পয়েন্ট যুক্ত করতে চাই যা প্রধানমন্ত্রী এবং অন্যদের সহায়তা করতে পারে।


মেমোরি স্তর সতর্কতা থাকা অবস্থায় আপনার কী করা উচিত?

এর মধ্যে যে কোনও সতর্কতা পাওয়ার পরে, আপনার হ্যান্ডলার পদ্ধতিটি অবিলম্বে কোনও অনিবদ্ধ স্মৃতি মুক্ত করে সাড়া দেওয়া উচিত। উদাহরণস্বরূপ, ইউআইভিউউকন্ট্রোলার শ্রেণীর ডিফল্ট আচরণটি যদি তার দৃশ্যটি বর্তমানে দৃশ্যমান না হয় তবে তার দৃষ্টিভঙ্গিটি পরিষ্কার করতে হবে; সাবক্লাসগুলি অতিরিক্ত ডেটা স্ট্রাকচার পরিষ্কার করে ডিফল্ট আচরণকে পরিপূরক করতে পারে। চিত্রগুলির ক্যাশে বজায় রাখে এমন অ্যাপ্লিকেশনটি বর্তমানে অনস্ক্রীন নয় এমন কোনও চিত্র প্রকাশের মাধ্যমে সাড়া দিতে পারে।


মেমরি স্তর সতর্কতা কীভাবে পালন করবেন?

Http://developer.apple.com / লাইব্রেরি / আইস /# ডকুমেন্টেশন / আইফোন / কনসেপ্টুয়াল / আইফোনস্প্রোগ্রামিংগাইড / পারফরম্যান্স টিউনিং / পারফরম্যান্স টিউনিং এইচটিএমএল থেকে

যখন সিস্টেমটি আপনার অ্যাপ্লিকেশনটিতে একটি স্বল্প-স্মৃতি সতর্কতা প্রেরণ করে, তখনই তাড়াতাড়ি সাড়া দিন। আইওএস সমস্ত চলমান অ্যাপ্লিকেশনগুলিকে অবহিত করে যখনই ফ্রি মেমরির পরিমাণ নিরাপদ প্রান্তিকের নিচে নেমে যায়। (এটি স্থগিত হওয়া অ্যাপ্লিকেশনগুলিকে অবহিত করে না)) যদি আপনার অ্যাপ্লিকেশনটি এই সতর্কতাটি গ্রহণ করে তবে অবশ্যই এটি যথাসম্ভব মেমরি মুক্ত করে তুলবে। এটি করার সর্বোত্তম উপায় হ'ল ক্যাশে, চিত্র অবজেক্ট এবং অন্যান্য ডেটা অবজেক্টগুলির শক্তিশালী উল্লেখগুলি সরিয়ে ফেলা যা পরে পুনরায় তৈরি করা যায়।

UIKit নিম্ন-মেমরির সতর্কতাগুলি প্রাপ্ত করার জন্য কয়েকটি উপায় সরবরাহ করে, যার মধ্যে নিম্নলিখিতগুলি রয়েছে:

  • অ্যাপ্লিকেশনটি প্রয়োগ করুনডিডিভিটমেমোরি ওয়ার্নিং: আপনার অ্যাপের প্রতিনিধিটির পদ্ধতি।
  • আপনার কাস্টম ইউআইভিউউকন্ট্রোলার সাবক্লাসে করণীয় রিসিপমেমোরি ওয়ার্নিং পদ্ধতিটি ওভাররাইড করুন।
  • ইউআইএপ্লিকেশনডিড রিসিপমেমোরি ওয়ার্নিং নোটফিকেশন নোটিফিকেশন পেতে রেজিস্টার করুন।

আপনার অ্যাপের মেমরির পদচিহ্ন কীভাবে হ্রাস করবেন?

  • স্মৃতি ফাঁস দূর করুন।
  • রিসোর্স ফাইলগুলি যতটা সম্ভব ছোট করুন।
  • বড় ডেটা সেটগুলির জন্য কোর ডেটা বা এসকিউএলাইট ব্যবহার করুন।
  • অলসভাবে সংস্থানগুলি লোড করুন।
  • থাম্ব অপশনটি ব্যবহার করে আপনার প্রোগ্রামটি তৈরি করুন।

Http://developer.apple.com/library/ios/#docamentation/iphone/conceptual/iphoneosprogrammingguide/PerformanceTuning/PerformanceTuning.html এ বিশদ


কীভাবে বুদ্ধিমানভাবে স্মৃতি বরাদ্দ করবেন?

  • স্বতঃস্ফুর্ত বস্তুগুলির আপনার ব্যবহার হ্রাস করুন : স্বয়ংক্রিয় রেফারেন্স গণনা (এআরসি) দিয়ে, / init অবজেক্টগুলি বরাদ্দ করা ভাল এবং সংকলকটি উপযুক্ত সময়ে আপনার জন্য তাদের ছেড়ে দেওয়া ভাল। এমনকি সাময়িক অবজেক্টের ক্ষেত্রেও এটি সত্য যে অতীতে আপনি তাদের বর্তমান পদ্ধতির ক্ষেত্রের অতীত থেকে বাঁচতে স্বাবলম্বী হতে পারেন।
  • সংস্থানগুলিতে আকারের সীমাবদ্ধতা আরোপ করুন : একটি ছোট যখন এটি করবে তখন কোনও বৃহত সংস্থান ফাইল লোড করা এড়াবেন । উচ্চ-রেজোলিউশন চিত্র ব্যবহার করার পরিবর্তে আইওএস-ভিত্তিক ডিভাইসের জন্য উপযুক্ত আকারের একটি ব্যবহার করুন। যদি আপনার অবশ্যই বড় রিসোর্স ফাইলগুলি ব্যবহার করা হয় তবে যে কোনও সময় আপনার প্রয়োজনীয় ফাইলের কেবলমাত্র অংশটি লোড করার উপায়গুলি সন্ধান করুন। উদাহরণস্বরূপ, সম্পূর্ণ ফাইলটিকে মেমোরিতে লোড করার পরিবর্তে, মেমরির মধ্যে এবং বাইরে ফাইলের অংশগুলি ম্যাপ করতে mmap এবং মুনম্যাপ ফাংশন ব্যবহার করুন। মেমরিতে ফাইল ম্যাপিং সম্পর্কে আরও তথ্যের জন্য।
  • আনবাউন্ডেড সমস্যা সেটগুলি এড়িয়ে চলুন : আনবাউন্ডেড সমস্যা সেটগুলিকে গণনা করার জন্য নির্বিচারে বড় পরিমাণে ডেটা লাগতে পারে। যদি সেটটি উপলব্ধ হওয়ার চেয়ে বেশি মেমরির প্রয়োজন হয় তবে আপনার অ্যাপ্লিকেশন গণনাগুলি সম্পূর্ণ করতে অক্ষম হতে পারে। আপনার অ্যাপ্লিকেশনগুলিকে যখনই সম্ভব এ জাতীয় সেটগুলি এড়ানো উচিত এবং জ্ঞাত মেমরি সীমাতে সমস্যা নিয়ে কাজ করা উচিত।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.