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

پیشنهاد ویژه
[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
چرخه عمر اشیاء مورد نظر خود را در نظر بگیرید. در اینجا برخی از استراتژی ها برای استفاده مؤثر آورده شده است:
-
برای ابرداده شیء از MAMAP استفاده کنید: اطلاعات مربوط به شیء را که می تواند در عملیات مانند ورود به سیستم یا ردیابی بدون نگه داشتن روی خود شیء کمک کند ، ذخیره کنید.
-
برای مدیریت دولت از ضعف استفاده کنید: لیستی از اشیاء فعال ، مانند مواردی که در حال حاضر در یک عملیات یا مواردی که برای یک رویداد ثبت نام کرده اند ، حفظ کنید و مطمئن شوید که از پاکسازی جلوگیری نمی کنید.
-
نظارت بر عملکرد: پس از
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 عمیق تر خواهید کرد. برنامه نویسی مبارک!