1 / 65

Lecture 35: Real-World USE OF Graphs

CSC 213 – Large Scale Programming. Lecture 35: Real-World USE OF Graphs. Today’s Goals. Consider what new does & how Java works What are traditional means of managing memory? Why did they change how this was done for Java? What are the benefits & costs of these changes?

thais
Télécharger la présentation

Lecture 35: Real-World USE OF Graphs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSC 213 – Large Scale Programming Lecture 35:Real-World USE OF Graphs

  2. Today’s Goals • Consider what new does & how Java works • What are traditional means of managing memory? • Why did they change how this was done for Java? • What are the benefits & costs of these changes? • Examine real-world use of graphs& its benefits • How do all of those graph algorithms get used? • Can we take advantage of this knowledge somehow? • What occurs in real-world we have not covered? • And why is beer ALWAYS answer to life’s problems

  3. Explicit Memory Management • Traditional form of memory management • Used a lot, but fallen out of favor • malloc / new • Commands used to allocate space for an object • free / delete • Return memory to system using these command • Simple to use

  4. Explicit Memory Management • Traditional form of memory management • Used a lot, but fallen out of favor • malloc / new • Commands used to allocate space for an object • free / delete • Return memory to system using these command • Simple to use, but tricky to get right • Forget to freememory leak • free too soon dangling pointer

  5. Dangling Pointers Node x = new Node(“happy”);

  6. Dangling Pointers Node x = new Node(“happy”); Node ptr = x;

  7. Dangling Pointers Node x = new Node(“happy”); Node ptr = x; delete x;// But I’m not dead yet!

  8. Dangling Pointers Node x = new Node(“happy”); Node ptr = x; delete x;// But I’m not dead yet! Node y = new Node(“sad”);

  9. Dangling Pointers Node x = new Node(“happy”); Node ptr = x; delete x;// But I’m not dead yet! Node y = new Node(“sad”); cout << ptr.data << endl;// sad 

  10. Dangling Pointers Node x = new Node(“happy”); Node ptr = x; delete x;// But I’m not dead yet! Node y = new Node(“sad”); cout << ptr.data << endl;// sad  • Creates insidious, hard-to-find bugs

  11. Solution: Garbage Collection • Allocate objects into program’s heap • No relation to heap implementing a priority queue • This heap is simply a “pile of memory” • Garbage collector scans objects on heap • Starts at references in program stack & static fields • Finds objects reachable from those program roots • We consider the unreachable objects “garbage” • Cannot be used again, so safe to remove from heap • Need to include free command is eliminated

  12. No More Dangling Pointers Node x = new Node(“happy”);

  13. No More Dangling Pointers Node x = new Node(“happy”); Node ptr = x;

  14. No More Dangling Pointers Node x = new Node(“happy”); Node ptr = x; //xreachable throughptrso cannot reclaim!

  15. No More Dangling Pointers Node x = new Node(“happy”); Node ptr = x; //xreachable throughptrso cannot reclaim! Node y = new Node(“sad”);

  16. No More Dangling Pointers Node x = new Node(“happy”); Node ptr = x; //xreachable throughptrso cannot reclaim! Node y = new Node(“sad”); cout << ptr.data << endl;// happy! 

  17. No More Dangling Pointers Node x = new Node(“happy”); Node ptr = x; //xreachable throughptrso cannot reclaim! Node y = new Node(“sad”); cout << ptr.data << endl;// happy!  • Eliminates one mistake programmers make! • But how do we perform garbage collection?

  18. Garbage Collection HEAP • Static & locals are called root references • Must compute objects in their transitive closure

  19. Garbage Collection HEAP • Static & locals are called root references • Must compute objects in their transitive closure

  20. Garbage Collection HEAP • Static & locals are called root references • Must compute objects in their transitive closure

  21. Garbage Collection HEAP • Static & locals are called root references • Must compute objects in their transitive closure

  22. Garbage Collection HEAP • Static & locals are called root references • Must compute objects in their transitive closure

  23. Garbage Collection HEAP • Static & locals are called root references • Must compute objects in their transitive closure

  24. Garbage Collection HEAP • Static & locals are called root references • Must compute objects in their transitive closure

  25. Garbage Collection HEAP • Static & locals are called root references • Must compute objects in their transitive closure

  26. Garbage Collection HEAP • Static & locals are called root references • Must compute objects in their transitive closure

  27. Garbage Collection HEAP • Static & locals are called root references • Must compute objects in their transitive closure

  28. Garbage Collection HEAP • Static & locals are called root references • Must compute objects in their transitive closure

  29. Garbage Collection HEAP • Remove unmarked objects from the heap

  30. Garbage Collection HEAP • Remove unmarked objects from the heap

  31. Garbage Collection HEAP • Remove unmarked objects from the heap • New objects allocated into empty spaces

  32. Why Not Always Use GC? • Garbage collection has obvious benefits • Eliminates some errors that often occurs • Added benefit: also makesprogramming easier

  33. Why Not Always Use GC? • GC also has several drawbacks • Reachable objectscould, not will, be used again • More memory needed to hold the extra objects • It takes time to compute reachable objects live dead unreachable reachable

  34. Why Not Always Use GC? • GC also has several drawbacks • Reachable objectscould, not will, be used again • More memory needed to hold the extra objects • It takes time to compute reachable objects live dead obj =new Object(); unreachable reachable free(obj)

  35. can be explicitly freed Why Not Always Use GC? • GC also has several drawbacks • Reachable objectscould, not will, be used again • More memory needed to hold the extra objects • It takes time to compute reachable objects live dead obj =new Object(); unreachable reachable free(obj)

  36. can be garbage collected Why Not Always Use GC? • GC also has several drawbacks • Reachable objectscould, not will, be used again • More memory needed to hold the extra objects • It takes time to compute reachable objects live dead unreachable reachable free(??)

  37. Cost of Accessing Memory • How long memory access takes is also important • Will make a major difference in time program takes • Imaginary scenario usedto consider this effect:

  38. Cost of Accessing Memory • How long memory access takes is also important • Will make a major difference in time program takes • Imaginary scenario usedto consider this effect: I want a beer

  39. Registers and Caches • Inside the CPU, find first levels of memory • At the lowest level, are processor’s registers

  40. Registers and Caches • Inside the CPU, find first levels of memory • At the lowest level, are processor’s registers

  41. Registers and Caches • Inside the CPU, find first levels of memory • At the lowest level, are processor’s registers • Very, very fast but… • … number of beers held is limited

  42. Registers and Caches • Inside the CPU, find first levels of memory • At the lowest level, are processor’s registers • Use caches at next level for dearest memory

  43. Registers and Caches • Inside the CPU, find first levels of memory • At the lowest level, are processor’s registers • Use caches at next level for dearest memory

  44. Registers and Caches • Inside the CPU, find first levels of memory • At the lowest level, are processor’s registers • Use caches at next level for dearest memory • More space than registers, but… • … not as fast (walk across room) • Will need more beer if party is good

  45. Horrors! • Processor does its best to keep memory local • Caches organized to hold memory needed soon • Makes guesses, since this requires predicting future • Will eventually drink all beer in house

  46. Horrors! • Processor does its best to keep memory local • Caches organized to hold memory needed soon • Makes guesses, since this requires predicting future • Will eventually drink all beer in house

  47. Horrors! • Processor does its best to keep memory local • Caches organized to hold memory needed soon • Makes guesses, since this requires predicting future • Will eventually drink all beer in house • 12MB is largest cache size at the moment • Many programs need more than this • What do we do?

  48. When the House Runs Dry… • What do you normally do when all beer gone? • Must go to store to get more… • … but do not want a DUI so we must walk to store • Processor uses RAM to store data that cannot fit • RAM sizes are much, much larger than caches • 100x slower to access, however

  49. When Store Is Out Of Beer...

  50. When Store Is Out Of Beer...

More Related