0% found this document useful (0 votes)
51 views

COMP 352 Data Structures and Algorithms: Recursion

Comp 352 Concordia Winter 2018 class notes

Uploaded by

aikfirki
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views

COMP 352 Data Structures and Algorithms: Recursion

Comp 352 Concordia Winter 2018 class notes

Uploaded by

aikfirki
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

COMP 352

Data Structures and


Algorithms

RECURSION
Chapter 15.1 to 15.2

1
Today
 Introduction
 Method Stack in JVM
 Memory management
 Garbage Collection
 Memory Hierarchies
Computer Memory
 In order to implement any data structure on an actual
computer, we need to use computer memory.
 Computer memory is organized into a sequence of words,
each of which typically consists of 4, 8, or 16 bytes
(depending on the computer).
 These memory words are numbered from 0 to N −1,
where N is the number of memory words available to the
computer.
 The number associated with each memory word is known
as its memory address.

3
Method Stack in the JVM
How the Java virtual machine handles method invocation and return

4
Object Creation
 With Java for example, all objects are
stored in a pool of memory, known as the
memory heap or Java heap (which should not
be confused with the “heap” data structure
we will cover later in the course).
 Consider what happens when we execute a
command such as:
int[] items =new int[k]
 A new instance of the class is created and
stored somewhere within the memory heap.

5
Free List

 The storage available in the memory heap is divided


into blocks, which are contiguous array-like “chunks” of
memory that may be of variable or fixed sizes.
 The system must be implemented so that it can quickly
allocate memory for new objects.
 One popular method is to keep contiguous “holes” of
available free memory in a linked list, called the free
list.
 Deciding how to allocate blocks of memory from the
free list when a request is made is known as memory
management.
6
Memory Management
 Several heuristics have been suggested for allocating
memory from the heap so as to minimize
fragmentation.
 The best-fit algorithm searches the entire free list to find
the hole whose size is closest to the amount of memory
being requested.
 The first-fit algorithm searches from the beginning of the
free list for the first hole that is large enough.
 The next-fit algorithm is similar, in that it also searches
the free list for the first hole that is large enough, but it
begins its search from where it left off previously, viewing
the free list as a circularly linked list.
 The worst-fit algorithm searches the free list to find the
largest hole of available memory.
7
Garbage Collection
 The process of detecting “stale” objects, deallocating
the space devoted to those objects, and returning the
reclaimed space to the free list is known as garbage
collection.
 In order for a program to access an object, it must have
a direct or indirect reference to that object.
 Such objects are live objects.
 We refer to all live objects with direct reference (that is
a variable pointing to them) as root objects.
 An indirect reference to a live object is a reference
that occurs within the state of some other live object,
such as a cell of a live array or field of some live object.
8
Mark-Sweep Algorithm

 In the mark-sweep garbage collection algorithm, we


associate a “mark” bit with each object that identifies whether
that object is live.
 When we determine at some point that garbage collection is
needed, we suspend all other activity and clear the mark bits of
all the objects currently allocated in the memory heap.
 We then trace through the active namespaces and we mark all
the root objects as “live.”
 We must then determine all the other live objects—the ones that
are reachable from the root objects.
 To do this efficiently, we can perform a depth-first search (see
Section 14.3.1) on the directed graph that is defined by objects
reference other objects.

9
Memory Hierarchies
 Computers have a hierarchy of different kinds of memories, which
vary in terms of their size and distance from the CPU.
 Closest to the CPU are the internal registers. Access to such
locations is very fast, but there are relatively few such locations.
 At the second level in the hierarchy are the memory caches.
 At the third level in the hierarchy is the internal memory, which is
also known as main memory or core memory.
 Another level in the hierarchy is the external memory, which
usually consists of disks.

10
Virtual Memory
 Virtual memory consists of providing an address
space as large as the capacity of the external
memory, and of transferring data in the secondary
level into the primary level when they are addressed.
 Virtual memory does not limit the programmer to the
constraint of the internal memory size.
 The concept of bringing data into primary memory is
called caching, and it is motivated by temporal
locality.
 By bringing data into primary memory, we are hoping
that it will be accessed again soon, and we will be
able to respond quickly to all the requests for this
data that come in the near future.

11
Page Replacement Strategies
 When a new block is referenced and the
space for blocks from external memory is full,
we must evict an existing block.
 There are several such page replacement
strategies, including:
 FIFO
 LIFO
 Random

12
Today
 Introduction
 Method Stack in JVM
 Memory management
 Garbage Collection
 Memory Hierarchies

13
References
These slides has been extracted, modified and updated from
original slides of :
1. Data Structures and Algorithms in Java, 6th edition. John
Wiley& Sons,
2. Java Software Structures, 4th Edition, Lewis/Chase, 2014

Copyright © Wiley, Michael T. Goodrich, Roberto TamassiaCopyright © 2014


Copyright © Lewis/Chase, 2014
Copyright © 2015 Nancy Acemian
Copyright © 2015 Nora Houari
All rights reserved

14

You might also like