Post# 1512143549

1-Dec-2017 9:52 pm


GC:

- যে কোনো Tracing GC তে কমপক্ষে দ্বিগুন মেমোরি লাগে নরমাল থেকে। java এত মেমোরি খায় এর gc এর জন্য। এটা দ্রুত চলে ঠিক। কিন্তু এমন ভাবে পুরো কম্পিউটারের প্রোসেসর রেম খেয়ে বসে থাকে যে অন্য কোনো প্রোগ্রাম আর ভালো মত চলতে পারবে না।

দ্বিতীয় সমস্যা হলো gc pause. ১০ সেকেন্ড পর পর এপ্লিকেশন থেমে যাবে কিছুক্ষনের জন্য। garbage collection চলে।

এ জন্য gc ল্যংগুয়েজ দিযে game লিখা যায় না। কিছুক্ষন পর পর ফ্রোজেন হয়ে যায়, আবার ছাড়ে। এভাবে চলতে থাকে।

- এর অল্টারনেট প্রথমে ছিলো reference counting। যা C++ এর RAII দিয়ে করা যায়।

পরবর্তিতে Boost এ সম্ভবতঃ auto pointer হিসাবে লাইব্রেরি করা আছে। আমি boost ব্যবহার করি নি।

- এর পর ২০১০ এর দিকে এসেছে automatic reference counting, যেটা apple প্রথম আনে objective C তে। পরবর্তিতে swift এ। নাম দেয় ARC.

- এর পর নতুন এখন rust এর ownership system.

- go যেহেতু tracing gc ব্যবহার করে, তাই google এটাকে অপটিমাইজ করে pause time কমিয়ে এনেছে। কিন্তু বেশি RAM এর সমস্যাটা রেয়ে গিয়েছে। আর pause time কমায় parallel process চালিয়ে। প্রসেসর বেশি খায়।

1-Dec-2017 9:52 pm

Published
1-Dec-2017