Memory Management - Modern Programming Languages - Lecture Slides, Slides of Advanced Computer Programming

The key points are: Memory Management, Dynamic Memory Allocation, Explicit Allocations, Memory Model, Current Heap Links, Garbage Collection, Java Arrays, Stacks and Heaps, Memory Management Code, Special Syntax, Memory Managers

Typology: Slides

2012/2013

Uploaded on 04/18/2013

palvani
palvani 🇮🇳

4.5

(2)

83 documents

1 / 63

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Memory Management
Chapter Fourteen Modern Programming Languages, 2nd ed. 1
Docsity.com
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f

Partial preview of the text

Download Memory Management - Modern Programming Languages - Lecture Slides and more Slides Advanced Computer Programming in PDF only on Docsity!

Memory Management

Chapter Fourteen Modern Programming Languages, 2nd ed. (^) Docsity.com 1

Dynamic Memory Allocation

 Lots of things need memory at runtime:

– Activation records

– Objects

– Explicit allocations: new, malloc, etc.

– Implicit allocations: strings, file buffers, arrays

with dynamically varying size, etc.

 Language systems provide an important

hidden player: runtime memory

management

Chapter Fourteen Modern Programming Languages, 2nd ed. (^) Docsity.com 2

Memory Model

 For now, assume that the OS grants each

running program one or more fixed-size

regions of memory for dynamic allocation

 We will model these regions as Java arrays

– To see examples of memory management code

– And, for practice with Java

Chapter Fourteen Modern Programming Languages, 2nd ed. (^) Docsity.com 4

Declaring An Array

 A Java array declaration:

 Array types are reference types—an array is

really an object, with a little special syntax

 The variable a above is initialized to null

 It can hold a reference to an array of int

values, but does not yet

Chapter Fourteen Modern Programming Languages, 2nd ed. 5

int[] a = null;

Docsity.com

Using An Array

 Use a[i] to refer to an element (as lvalue

or rvalue): a is an array reference

expression and i is an int expression

 Use a.length to access length

 Array indexes are 0..(a.length-1)

Chapter Fourteen Modern Programming Languages, 2nd ed. 7

int i = 0;

while (i<a.length) {

a[i] = 5;

i++;

Docsity.com

Memory Managers In Java

Chapter Fourteen Modern Programming Languages, 2nd ed. 8

public class MemoryManager { private int[] memory;

/**

  • MemoryManager constructor.
  • @param initialMemory int[] of memory to manage */ public MemoryManager(int[] initialMemory) { memory = initialMemory; } … }

We will show Java implementations

this way. The initialMemory

array is the memory region provided

by the operating system.

Docsity.com

Stacks Of Activation Records

 For almost all languages, activation records

must be allocated dynamically

 For many, it suffices to allocate on call and

deallocate on return

 This produces a stack of activation records:

push on call, pop on return

 A simple memory management problem

Chapter Fourteen Modern Programming Languages, 2nd ed. (^) Docsity.com 10

A Stack Illustration

Chapter Fourteen Modern Programming Languages, 2nd ed. 11

7:

top: 8

6:

5:

4:

3:

2:

1:

0:

An empty stack of 8

words. The stack will

grow down, from high

addresses to lower

addresses. A reserved

memory location (perhaps

a register) records the

address of the lowest

allocated word.

Docsity.com

Chapter Fourteen Modern Programming Languages, 2nd ed. 13

The program calls

m.push(2), which

returns 2: the address of the

first of the 2 words

allocated for an activation

record. The stack is now

full—there is not room even

for m.push(1).

For m.pop(), just do

top = memory[top]

to return to previous

configuration.

7:

top: 1

6:

5:

4:

3:

2:

1:

0:

first activation record

8

second activation record

4

Docsity.com

A Java Stack Implementation

Chapter Fourteen Modern Programming Languages, 2nd ed. 14

public class StackManager { private int[] memory; // the memory we manage private int top; // index of top stack block

/**

  • StackManager constructor.
  • @param initialMemory int[] of memory to manage */ public StackManager(int[] initialMemory) { memory = initialMemory; top = memory.length; }

Docsity.com

Chapter Fourteen Modern Programming Languages, 2nd ed. 16

  • Pop the top stack frame. This works only if the
  • stack is not empty. */ public void pop() { top = memory[top]; } }

Docsity.com

Outline

 14.2 Memory model using Java arrays

 14.3 Stacks

 14.4 Heaps

 14.5 Current heap links

 14.5 Garbage collection

Chapter Fourteen Modern Programming Languages, 2nd ed. (^) Docsity.com 17

First Fit

 A linked list of free blocks, initially

containing one big free block

 To allocate:

– Search free list for first adequate block

– If there is extra space in the block, return the

unused portion at the upper end to the free list

– Allocate requested portion (at the lower end)

 To free, just add to the front of the free list

Chapter Fourteen Modern Programming Languages, 2nd ed. (^) Docsity.com 19

Heap Illustration

Chapter Fourteen Modern Programming Languages, 2nd ed. 20

7:

freeStart: 0

6:

5:

4:

3:

2:

1:

0:

10

9:

8:

A heap manager m with a memory

array of 10 words, initially empty.

The link to the head of the free list is

held in freeStart.

Every block, allocated or free, has its

length in its first word.

Free blocks have free-list link in their

second word, or –1 at the end of the

free list.

Docsity.com