برنامه نویسی

ضعیف و ضعف: مجموعه های کارآمد با حافظه

پیشنهاد ویژه

[button color="primary" size="big" link="https://nabfollower.com/buy-real-follower/" icon="" target="true" follow="false"]خرید فالوور واقعی[/button][button color="primary" size="big" link="https://nabfollower.com/buy-instagram-like/" icon="" target="true" follow="false"]خرید لایک اینستاگرام[/button][button color="primary" size="big" link="https://nabfollower.com/buy-instagram-views/" icon="" target="true" follow="false"]خرید ویو اینستاگرام[/button][button color="primary" size="big" link="https://nabfollower.com/" icon="" target="true" follow="false"]خرید فالوور اینستاگرام[/button]

در چشم انداز روزافزون JavaScript ، توسعه دهندگان غالباً در جستجوی روشهای پیچیده تر و کارآمدتر برای مدیریت مجموعه اشیاء هستند. وارد کردن WeakMap وت WeakSet: دو نوع مجموعه که به عنوان جایگزینی با حافظه برای همتایان استاندارد خود عمل می کنند ، Map وت Setبشر آنها نه تنها تمام قابلیت های این مجموعه های سنتی را ارائه می دهند ، بلکه از مزایای عدم جلوگیری از جمع آوری زباله از عناصر خود نیز برخوردار هستند. در این مقاله ، ما عمیقاً به چه چیزی شیرجه خواهیم کرد WeakMap وت WeakSet ، پیچیدگی های آنها را بررسی کرده و چگونگی و زمان استفاده از آنها را بررسی کنید ، همراه با نمونه های کد عملی.

درک ماپ ضعیف و ضعف

1. ضعیف چیست؟

بوها WeakMap مجموعه ای از جفت های ارزش کلیدی است که در آن کلیدها اشیاء هستند و مقادیر می توانند هر نوع داده باشند. ویژگی مهم این WeakMap این است که کلیدهای آن نگهداری می شود ضعیفبشر این بدان معناست که اگر منابع دیگری به یک شیء کلیدی وجود نداشته باشد ، می تواند زباله جمع آوری شود ، در نتیجه حافظه را آزاد می کند.

ایجاد یک مپ ضعیف:

const weakMap = new WeakMap();
const objKey = {};
const objValue = 'I am a weak value.';

weakMap.set(objKey, objValue);
console.log(weakMap.get(objKey)); // Output: "I am a weak value."
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. Weakset چیست؟

شبیه WeakMap، الف WeakSet مجموعه ای از اشیاء است. تمایز اصلی این است که WeakSet فقط اشیاء را ذخیره می کند (به عنوان مقادیر آن) و آنها را با هیچ مقداری مرتبط نمی کند. مانند WeakMapبا WeakSet همچنین ورودی های خود را ضعیف نگه می دارد.

ایجاد یک ضعف:

const weakSet = new WeakSet();
const obj1 = {};
const obj2 = {};

weakSet.add(obj1);
console.log(weakSet.has(obj1)); // Output: true
console.log(weakSet.has(obj2)); // Output: false
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مدیریت حافظه: قدرت ضعف

هر دو WeakMap وت WeakSet از نظر مدیریت حافظه به دلیل منابع ضعیفی که آنها حفظ می کنند ، از نظر مدیریت حافظه مزیت قابل توجهی ارائه دهید. این به شما امکان می دهد از نشت حافظه خودداری کنید – به ویژه هنگام مدیریت اشیاء که پس از یک چرخه عمر خاص مورد نیاز نیستند ، مفید است.

موارد استفاده عملی

مدیریت منابع شیء

هنگامی که سناریویی دارید که می خواهید ابرداده یا اطلاعات اضافی را با اشیاء مرتبط کنید ، اما نمی خواهید جلوی جمع آوری زباله ها را بگیرید ، WeakMap می درخشد

const metadata = new WeakMap();

function trackObject(obj, data) {
    metadata.set(obj, data);
}

const someObject = {};
trackObject(someObject, { info: 'This object is tracked.' });

console.log(metadata.get(someObject)); // Output: { info: 'This object is tracked.' }
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مدیریت شنونده رویداد

تصور کنید که شنوندگان رویداد را به یک شیء وصل می کنید اما نمی خواهید پس از خارج شدن از محدوده ، مرجع آن شیء را حفظ کنید. با استفاده از WeakMap، با خیال راحت می توانید گیرنده های رویداد را ذخیره کنید.

const eventHandlers = new WeakMap();

function addEventListenerToObject(obj, event, handler) {
    eventHandlers.set(obj, handler);
    obj.addEventListener(event, handler);
}

const button = document.createElement('button');
addEventListenerToObject(button, 'click', () => {
    console.log('Button clicked!');
});

// Once `button` goes out of scope or is removed, no memory leaks occur.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

استراتژی های اجرای دقیق

هنگام اجرای WeakMap یا WeakSetچرخه عمر اشیاء مورد نظر خود را در نظر بگیرید. در اینجا برخی از استراتژی ها برای استفاده مؤثر آورده شده است:

  1. برای ابرداده شیء از MAMAP استفاده کنید: اطلاعات مربوط به شیء را که می تواند در عملیات مانند ورود به سیستم یا ردیابی بدون نگه داشتن روی خود شیء کمک کند ، ذخیره کنید.

  2. برای مدیریت دولت از ضعف استفاده کنید: لیستی از اشیاء فعال ، مانند مواردی که در حال حاضر در یک عملیات یا مواردی که برای یک رویداد ثبت نام کرده اند ، حفظ کنید و مطمئن شوید که از پاکسازی جلوگیری نمی کنید.

  3. نظارت بر عملکرد: پس از WeakMap وت WeakSet در صورت لزوم ، شمارش مرجع را در یک ساختار جداگانه پیگیری کنید تا موارد استفاده را بهتر درک کنید.

const myWeakMap = new WeakMap();
const obj = {};

myWeakMap.set(obj, 'data related to obj');

// Expect that `obj` can be garbage collected after this point
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

غذای اصلی

  • مجموعه زباله ها: ویژگی اصلی تنظیم شده WeakMap وت WeakSet جداگانه توانایی آنها در اجازه دادن به جمع کننده زباله ها ، اشیاء نشده را تمیز می کند و از استفاده از حافظه کارآمد اطمینان می دهد.
  • منابع ضعیف: هر دو مجموعه برای ذخیره کلیدها از منابع ضعیف استفاده می کنند WeakMap و مقادیر در WeakSetبشر
  • قابل تکرار نیست: برخلاف سنتی Map وت Setبا WeakMap وت WeakSet قابل تکرار نیست ، به این معنی که شما نمی توانید از طریق محتوای آنها حلقه کنید.
  • موارد استفاده: آنها به ویژه برای ردیابی داده های خصوصی مرتبط با اشیاء یا اجرای الگوهای مانند نمایندگی رویداد بدون ایجاد نشت حافظه مفید هستند.

پایان

WeakMap وت WeakSet ابزارهای قدرتمندی در مجموعه غنی از ساختارهای داده جاوا اسکریپت هستند. قابلیت های آنها به توسعه دهندگان این امکان را می دهد تا با استفاده از منابع ضعیف به طور مؤثر ، کد کارآمد را بنویسند. همانطور که این ساختارها را در برنامه های خود وارد می کنید ، همیشه چرخه حیات اشیاء خود را در نظر بگیرید تا از پتانسیل کامل آنها بدون افتادن در گودال نشت حافظه استفاده کنید.

خواندن بیشتر و منابع یادگیری پیشرفته

با کاوش در منابع پیشنهادی ، درک خود را از مدیریت حافظه ، بهترین شیوه ها و تفاوت های ظریف این مجموعه های قدرتمند در JavaScript عمیق تر خواهید کرد. برنامه نویسی مبارک!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا