Notice: file_put_contents(): Write of 1169 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50

Warning: file_put_contents(): Only 16384 of 17553 bytes written, possibly out of free disk space in /var/www/tgoop/post.php on line 50
🦞 Geek Engineers@geek_engineers P.514
GEEK_ENGINEERS Telegram 514
رفرنس کانتینگ یا به اصطلاح RC چیه؟

یک روش مدیریت مموری هست که توی بک گراند شامل یک‌ counter میشه. کامپایلر بطور هوشمندانه میاد پوینتر ها و رفرنس هایی که به آبجکت مورد نظر هست رو شناسایی میکنه (در پروسه کامپایل)، و بعد به ازای هر رفرنس میاد counter رو یک واحد increment میکنه. و زمانی که از اسکوپ مورد نظر خارج میشه، counter رو یک واحد decrement میکنه.

و اگر counter به صفر برسه ینی هیچ رفرنسی به این آبجکت وجود نداره و بی استفاده ست. پس بلافاصله free میشه allocation ش. همونطور که توی این سورس کد می‌بینید پیاده سازی ش راحته. یه Mutex Lock هم بهش اضافه میشه که توی محیط مولتی ترد هم مشکلی پیش نیاد.

مزایای RC اینه که وقفه یا به اصطلاح Stop the world ای که توی GC هست، توی RC بوجود نمیاد و ازاد سازی حافظه قابل پیش‌بینی تر هست.

معایبش :) در واقع اگر دوتا آبجکت به همدیگه رفرنس بدن که به اصطلاح Reference Cycling گفته میشه، درین صورت هیچ یک ازین دو آبجکت free نخواهند شد. معایب دیگه ش اینه که مخصوصا در محیط های مولتی ترد overhead خیلی زیادی داره. البته اگر سینگل ترد باشه هم درکل خیلی مکانیزم بهینه ای نیست.

در نتیجه نسبت به GC مکانیزم سنتی تر و پرفرمنس کمتری داره.

زبان هایی که از Reference Counting استفاده میکنند:

- Swift (Automatic RC)
- ObjectiveC
- Python (
Combination of GC and RC.
)
- C++ (Smart Pointers)
👾8👍2



tgoop.com/geek_engineers/514
Create:
Last Update:

رفرنس کانتینگ یا به اصطلاح RC چیه؟

یک روش مدیریت مموری هست که توی بک گراند شامل یک‌ counter میشه. کامپایلر بطور هوشمندانه میاد پوینتر ها و رفرنس هایی که به آبجکت مورد نظر هست رو شناسایی میکنه (در پروسه کامپایل)، و بعد به ازای هر رفرنس میاد counter رو یک واحد increment میکنه. و زمانی که از اسکوپ مورد نظر خارج میشه، counter رو یک واحد decrement میکنه.

و اگر counter به صفر برسه ینی هیچ رفرنسی به این آبجکت وجود نداره و بی استفاده ست. پس بلافاصله free میشه allocation ش. همونطور که توی این سورس کد می‌بینید پیاده سازی ش راحته. یه Mutex Lock هم بهش اضافه میشه که توی محیط مولتی ترد هم مشکلی پیش نیاد.

مزایای RC اینه که وقفه یا به اصطلاح Stop the world ای که توی GC هست، توی RC بوجود نمیاد و ازاد سازی حافظه قابل پیش‌بینی تر هست.

معایبش :) در واقع اگر دوتا آبجکت به همدیگه رفرنس بدن که به اصطلاح Reference Cycling گفته میشه، درین صورت هیچ یک ازین دو آبجکت free نخواهند شد. معایب دیگه ش اینه که مخصوصا در محیط های مولتی ترد overhead خیلی زیادی داره. البته اگر سینگل ترد باشه هم درکل خیلی مکانیزم بهینه ای نیست.

در نتیجه نسبت به GC مکانیزم سنتی تر و پرفرمنس کمتری داره.

زبان هایی که از Reference Counting استفاده میکنند:

- Swift (Automatic RC)
- ObjectiveC
- Python (
Combination of GC and RC.
)
- C++ (Smart Pointers)

BY 🦞 Geek Engineers


Share with your friend now:
tgoop.com/geek_engineers/514

View MORE
Open in Telegram


Telegram News

Date: |

More>> In the next window, choose the type of your channel. If you want your channel to be public, you need to develop a link for it. In the screenshot below, it’s ”/catmarketing.” If your selected link is unavailable, you’ll need to suggest another option. Hashtags are a fast way to find the correct information on social media. To put your content out there, be sure to add hashtags to each post. We have two intelligent tips to give you: During a meeting with the president of the Supreme Electoral Court (TSE) on June 6, Telegram's Vice President Ilya Perekopsky announced the initiatives. According to the executive, Brazil is the first country in the world where Telegram is introducing the features, which could be expanded to other countries facing threats to democracy through the dissemination of false content. Concise
from us


Telegram 🦞 Geek Engineers
FROM American