Your SlideShare is downloading. ×
Is2215 lecture5 lecturer_g_cand_classlibraries
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

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
  • Transcript

    • 1. Automatic Memory ManagementGARBAGE COLLECTION
    • 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. 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. 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. 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. 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. 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. 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. 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.  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. 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. 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. 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. Sharing ClassesCLASS LIBRARIES
    • 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. 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. Creating a Class Library
    • 18. Sample Class Library Code
    • 19. Change some properties
    • 20. Compile…
    • 21. Create New Project
    • 22. Add Form
    • 23. Add Reference
    • 24. Using our Class Library