Kamis, 26 Desember 2013

Manajemen Memori

     Untuk menghindari adanya pemborosan dalam penggunaan memori computer tentu kita harus pandai mengatur keberadaan data-data yang tersimpan dalam memori.  Artinya, kita harus mengatur keberadaan data tersebut secara dinamis. Untuk melakukan hal tersebut kita harus menggunakan pointer, yaitu dengan cara mengalokasikan data-data yang diperlukan dan mendealokasikan data-data yang diperlukan dan mendealokasikan data-data yang sudah tidak diperlukan lagi oleh proram. Hal inilah yang merupakan keunggulan pointer  karena dengan pengalokasian secara dinamis tentu program kita akan berjalan lebih cepat sehingga kinerja atau perfomanya pun jauh lebih tinggi bila dibandingkan dengan program yang semua data-datanya dialokasikan dengan cara statis.

1.Alokasi Memori
Proses pengalokasian memori merupakan proses pemesanan sejumlah ruang memori untuk menempatkan data sesuai dengan ukuran yang ditentukan sendiri oleh programmer. Bahasa Pascal menyediakan tiga buah prosedur yang dapat digunakan untuk melakukan alokasi memori, yaitu Prosedur  New, GetMem  dan Mark.  Berikut ini penjelasan dari masing-masing prosedur tersebut.

Prosedur New
Bentuk prototipe dari prosedur ini adalah sebagai berikut :

Procedure New(var P: pointer);

Prosedur ini akan mengalokasikan memori dan mengeset pointer untuk menunjuk ke alamt baru tersebut. Pointer p bertipe pointer sehingga dapat digunakan untuk mengalokasikan berbagai tipe point (char, integer, real, record maupun lainnya). Setelah selesai digunakan, maka ruang memori tersebut  sebaiknya dialokasikan lagi dengan menggunakan prosedur Dispose.

Prosedur GetMem

Pada prosedur GetMem kita dapat mendefinisikan sendiri besarnya memori yang akan dialokasikan. Berikut ini prototype dari prosedur ini.

Procedure GerMem (var P: pointer;  Size:  Integer);

dimana P adalah pointer generic yang dapat diisikan dengan pointer dari tipe apapun. Sedangkan Size merupakan parameter yang berfungsi untuk menentukan besarnya ukuran memori yang akan dipesan. Pemesanan memori dengan prosedur GetMem ini harus didealokasikan dengan menggunakan prosedur FreeMem.

Prosedur Mark
Prosedur Mark memiliki prototipe sebagai berikut :

Procedure Mark(var P: pointer);

Prosedur ini hanya digunakan untuk melakukan perekaman keadaan heap memori ke dalam sebuah pointer.  Artinya, apabila kita akan mengalokasikan beberapa buah pointer dengan prosedur New atau GetMem, kita tidak perlu repot melakukan dealokasi satu persatu.

2.Dealokasi Memori
Dealokasi memori merupakan proses membebaskan kembali ruang memori yang sebelumnya telah ditempati oleh data tertentu sehingga ruang memori tersebut dapat digunakan kembali oleh data-data lain yang diperlukan oleh program. Sesuai dengan banyaknya prosedur pengalokasian, untuk proses dealokasi juga memiliki tiga buah prosedur, yaitu Dispose, FreeMem, dan Release.

a. Prosedur New
Dispose Prototipe dari prosedur ini sebagai berikut :

Procedure dispose(var P:  pointer);

Prosedur ini digunakan apabila kita mengalokasikan pointer P dengan menggunakan prosedur New.

b. Prosedur FreeMem
Prototipe dari prosedur ini sebagai berikut :

Procedure  FreeMem (var P:  pointer;  size:  integer);

Prosedur ini digunakan apabila kita mengalokasikan pointer p dengan menggunakan prosedur Get Mem. Begitu pula dengan nlai size haruss sesuai dengan nilai yang terdapat pada proses pengalokasian.

c. Prosedur Release
Prototipe dari prosedur ini sebagai berikut :

Procedure  Release( var P: pointer);

Prosedur ini digunakan untuk membebaskan semua pointer yang telah dialokasikan dan telah dutandai dengan menggunakan procedure Mark.


Sumber : Teknik Pemrograman Pascal revisi ketiga, Budi Raharjo








Tidak ada komentar:

Posting Komentar