• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Is2215 lecture5 lecturer_g_cand_classlibraries

Is2215 lecture5 lecturer_g_cand_classlibraries






Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • 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 Is2215 lecture5 lecturer_g_cand_classlibraries Presentation Transcript

  • Automatic Memory ManagementGARBAGE COLLECTION
  •  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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  •  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!!
  • 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
  • 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
  • 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
  • Sharing ClassesCLASS LIBRARIES
  • Classes Outside Applications We have spent the last couple of weeks creating classes within our application How useful is that? A bit useful…
  • 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
  • Creating a Class Library
  • Sample Class Library Code
  • Change some properties
  • Compile…
  • Create New Project
  • Add Form
  • Add Reference
  • Using our Class Library