Is2215 lecture5 lecturer_g_cand_classlibraries


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Public Class clsMyClass Private strName as String Public Property Name as String Get Return str
  • Public Class clsMyClass Private strName as String Public Property Name as String Get Return str
  • Is2215 lecture5 lecturer_g_cand_classlibraries

    1. 1. Automatic Memory ManagementGARBAGE COLLECTION
    2. 2.  In order to set aside a piece of memory for our resource we use the new keyword Dim myStudent As New Student This create a newobj instruction in the MSIL code generated from your application The constructor of class will then set up the initial state of the object Sub New() Course = 1 End Sub
    3. 3. Memory Allocation Use the resources by accessing the class members student.Name = txtName.Text student.studentID = txtID.Text Traditionally the programmer had to manually free up system resources For example in C++ you use a special Destructor Programmers often forget to kill objects, or try to access a piece of memory that has already been wiped myStudent = Nothing
    4. 4. Garbage Collection in .NET Garbage Collection is operating as a separate thread in the background GC itself requires resources to run It is assigned low priority Running out of memory?  Garbage Collection given REALTIME priority and collect all unwanted objects
    5. 5. How does it LocateGarbage? When an application is loaded a portion of memory is assigned to that particular program. This piece of memory is called the managed heap. The memory is seperated into three parts:Generation Generation GenerationZero One Two
    6. 6. Memory Allocation When you create an object using the new contructor Newobj called in MSIL When it executes:  Calculates the number of bytes for the object or type needs to be loaded into themanged heap  Add bytes required for an object’s overhead  Each object has two overhead fields: 1. Method Table Pointer 2. SyncBlockIndex
    7. 7. Memory Allocation Cont’d  CLR checks to see if the bytes required to allocate the object are available  If it fits it is allocated at the address pointed to by NextObjPtr  The address of the object is returned  NextObjPtr navigates past the object and finds where the next object will be placed in the heap
    8. 8. Cont’d All these processes happen in Generation Zero level When generation zero does not have enough space to allocate to other objects Garbage Collector given real time priority Garbage Collector will monitor level zero again to check objects scope It will mark items that are no longer needed
    9. 9. Cont’d As Garbage Collector starts it cleans up any objects that have been marked for cleaning AB C Three Objects B has lost its scope B is marked for collection Finally it is removed A C
    10. 10.  System only allocates memory at the end Job of garbage collector to compact the memory structure A C Garbage collection has not ended Looks at all the objects that have survived the sweep Those objects will be moved to Generation one Generation Zero can be used to store new objects. If Generation One doesn’t have enough space the process will be carried out there too!!
    11. 11. Problems with GarbageCollection Garbage Collection is run non- deterministically In VB 6.0 you could set a object = Nothing and the Class Terminate Event was raised. In VB .NET you can still set an object = Nothing, but this will not actually kill your object it will only mark it for cleaning
    12. 12. GC Cont’d If you don’t know when GC is going to run how can you clear up extra resources associate with a class instance? Extra Resources such as files, network connections, database connections are not handled very well by garbage collection Invoke the Sub Finalize
    13. 13. Finilize This is the method that the Garbage Collector must run on the object to clear any unmanaged resources, prior to reclaiming memory used by the object By default the finilize method doesn’t do anything We can override it and put in code to explicitly clean up unmanaged resources
    14. 14. Sharing ClassesCLASS LIBRARIES
    15. 15. Classes Outside Applications We have spent the last couple of weeks creating classes within our application How useful is that? A bit useful…
    16. 16. Seperating Classes from yourApplication You can place your project in a class library This is a project that gets compiled into a DLL You can then reference it from another project and access its functionality It allows you to reuse code
    17. 17. Creating a Class Library
    18. 18. Sample Class Library Code
    19. 19. Change some properties
    20. 20. Compile…
    21. 21. Create New Project
    22. 22. Add Form
    23. 23. Add Reference
    24. 24. Using our Class Library