Abstract:
Because of the growing popularity of programming languages with garbage collectors,
such as C# and Java, there is a clearly a desire for languages that support automated
memory management. However, as a result of the inefficiencies of the garbage collectors
of C# and Java, there is a requirement that programmers have a better understanding of
the underlying implementations of the garbage collectors in order to make applications
more robust or so that they can run on real-time systems. Using an implementation of
smart pointers written from scratch, this paper attempts to address this problem by
exploring techniques that are used by garbage collectors and ultimately concluding which
features of object-oriented languages make the task of automating efficient garbage
collection more difficult. As a result of the conclusions produced in this paper, it may be
possible to create a brand new language with the simplicity and elegance of Java and the
robustness and efficiency of C without the developer ever needing to perform memory
management.