We don't explicitly use Pointers, they are managed by the Common Language Runtime (CLR). A Reference is often referred to as a Pointer. The third type of "thing" to be put in our memory management scheme is a Reference to a Type. except, of course, for object which is the System.Object object): In C#, all the "things" declared with the following list of type declarations are Value types (because they are from System.ValueType):Īll the "things" declared with the types in this list are Reference types (and inherit from System.Object. We have four main types of things we'll be putting in the Stack and Heap as our code is executing: Value Types, Reference Types, Pointers, and Instructions. The Heap, on the other hand, has to worry about Garbage collection (GC) - which deals with how to keep the Heap clean (no one wants dirty laundry laying around. When the top box is no longer used, it's thrown out. The Stack is self-maintaining, meaning that it basically takes care of its own memory management. The picture above, while not really a true representation of what's happening in memory, helps us distinguish a Stack from a Heap. The Stack is like the stack of shoe boxes in the closet where we have to take off the top one to get to the one underneath it. The Heap is like the heap of clean laundry on our bed that we have not taken the time to put away yet - we can grab what we need quickly. With the Heap, there are no constraints as to what can be accessed like in the stack. The Heap is similar except that its purpose is to hold information (not keep track of execution most of the time) so anything in our Heap can be accessed at any time. When we're done with the top box (the method is done executing) we throw it away and proceed to use the stuff in the previous box on the top of the stack. We can only use what's in the top box on the stack. We keep track of what's going on in our application by stacking another box on top every time we call a method (called a Frame). Think of the Stack as a series of boxes stacked one on top of the next. The Heap is more or less responsible for keeping track of our objects (our data, well. The Stack is more or less responsible for keeping track of what's executing in our code (or what's been "called"). They reside in the operating memory on our machine and contain the pieces of information we need to make it all happen. Both the stack and heap help us run our code. If you haven't already met, let me introduce you to the Stack and the Heap. NET framework stores items in memory as your code executes. In this article, I'll cover the basics of the Stack and Heap, types of variables, and why some variables work as they do. Also, having a basic understanding of how memory management works will help explain the behavior of the variables we work with in every program we write. NET framework we don't have to actively worry about memory management and garbage collection (GC), we still have to keep memory management and GC in mind in order to optimize the performance of our applications.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |