Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай Java Application Performance and Memory Management, а также все другие курсы, прямо сейчас!
Премиум
  • Урок 1. 00:04:01
    What do we mean by performance, and what versions of Java does this course cover
  • Урок 2. 00:01:02
    Example code provided with this course
  • Урок 3. 00:01:38
    Using different JDK and JVM vendors
  • Урок 4. 00:05:12
    The structure of this course
  • Урок 5. 00:01:52
    How to get support while you're taking this course
  • Урок 6. 00:03:04
    What is bytecode?
  • Урок 7. 00:05:52
    The concept of "Just In Time Compilation"
  • Урок 8. 00:03:36
    Introducing the first example project
  • Урок 9. 00:05:24
    Finding out which methods are being compiled in our applications
  • Урок 10. 00:04:44
    The C1 and C2 Compilers and logging the compilation activity
  • Урок 11. 00:06:19
    Tuning the code cache size
  • Урок 12. 00:08:30
    Remotely monitoring the code cache with JConsole
  • Урок 13. 00:04:33
    The differences between the 32 bit and 64 bit JVM
  • Урок 14. 00:06:35
    Specifying which compiler to use at runtime
  • Урок 15. 00:02:05
    Turning off tiered compilation
  • Урок 16. 00:09:59
    Tuning native compilation within the Virtual Machine
  • Урок 17. 00:02:58
    Introduction - the structure of Java's memory
  • Урок 18. 00:05:57
    How the stack works
  • Урок 19. 00:05:26
    How the heap works
  • Урок 20. 00:07:47
    The heap and the stack together - an example
  • Урок 21. 00:04:55
    What does "passing by value" mean?
  • Урок 22. 00:02:21
    What does "passing by reference" mean?
  • Урок 23. 00:04:14
    Passing objects into methods
  • Урок 24. 00:03:10
    The final keyword and why it's not the same as a constant
  • Урок 25. 00:05:43
    Why the final keyword doesn't stop an object's values from being changed
  • Урок 26. 00:01:36
    Instructions for the exercise
  • Урок 27. 00:08:47
    Walkthrough of the solution
  • Урок 28. 00:05:34
    Introduction - what is an escaping reference?
  • Урок 29. 00:07:32
    Strategy 1 - using an iterator
  • Урок 30. 00:06:55
    Strategy 2 - duplicating collections
  • Урок 31. 00:04:39
    Strategy 3 - using immutable collections
  • Урок 32. 00:05:07
    Strategy 4 - duplicating objects
  • Урок 33. 00:04:40
    Strategy 5 - using interfaces to create immutable objects
  • Урок 34. 00:09:50
    Strategy 6 - using modules to hide the implementation
  • Урок 35. 00:04:41
    Instructions for the exercise
  • Урок 36. 00:07:40
    Walkthrough of the solution
  • Урок 37. 00:05:10
    The role of the Metaspace
  • Урок 38. 00:01:59
    The PermGen
  • Урок 39. 00:04:15
    Are objects always created on the heap?
  • Урок 40. 00:06:09
    The String Pool
  • Урок 41. 00:03:04
    Interning Strings
  • Урок 42. 00:04:11
    How the string pool is implemented
  • Урок 43. 00:11:37
    Understanding the size and density of the string pool
  • Урок 44. 00:03:29
    Tuning the size of the string pool
  • Урок 45. 00:07:45
    Tuning the size of the heap
  • Урок 46. 00:03:07
    Shortcut syntax for heap tuning flags
  • Урок 47. 00:04:58
    What it means when we say Java is a managed language
  • Урок 48. 00:02:50
    How Java knows which objects can be removed from the Heap
  • Урок 49. 00:04:29
    The System.gc() method
  • Урок 50. 00:03:53
    Java 11's garbage collector can give unused memory back to the operating system
  • Урок 51. 00:02:06
    Why it's not a good idea to run the System.gc() method
  • Урок 52. 00:05:18
    The finalize() method
  • Урок 53. 00:03:29
    The danger of using finalize()
  • Урок 54. 00:08:52
    What is a soft leak?
  • Урок 55. 00:06:59
    Introducing (J)VisualVM
  • Урок 56. 00:03:00
    Monitoring the size of the heap over time
  • Урок 57. 00:04:16
    Fixing the problem and checking the heap size
  • Урок 58. 00:03:14
    Generating a heap dump
  • Урок 59. 00:05:21
    Viewing a heap dump
  • Урок 60. 00:03:54
    How the garbage collector works out what is garbage
  • Урок 61. 00:04:07
    Why the heap is divided into generations
  • Урок 62. 00:05:01
    The Internals of the Young Generation
  • Урок 63. 00:06:11
    Viewing the generations in VisualVM
  • Урок 64. 00:03:06
    Viewing the heap when there's a soft leak
  • Урок 65. 00:06:28
    Monitoring garbage collections
  • Урок 66. 00:05:48
    Turning off automated heap allocation sizing
  • Урок 67. 00:04:56
    Tuning garbage collection - old and young allocation
  • Урок 68. 00:02:25
    Tuning garbage collection - survivor space allocation
  • Урок 69. 00:02:07
    Tuning garbage collection - generations needed to become old
  • Урок 70. 00:05:38
    Selecting a garbage collector
  • Урок 71. 00:04:11
    The G1 garbage collector
  • Урок 72. 00:01:55
    Tuning the G1 garbage collector
  • Урок 73. 00:02:53
    String de-duplication
  • Урок 74. 00:03:45
    Introducing Java Mission Control (JMC)
  • Урок 75. 00:05:17
    Building the JMC binaries
  • Урок 76. 00:03:31
    Running JMC and connecting to a VM
  • Урок 77. 00:03:42
    Customising the overview tab
  • Урок 78. 00:01:41
    The MBean Browser tab
  • Урок 79. 00:02:25
    The System, Memory and Diagnostic Commands tabs
  • Урок 80. 00:08:00
    Introducing our problem project
  • Урок 81. 00:09:03
    Using the flight recorder
  • Урок 82. 00:04:23
    Analyzing a flight recording
  • Урок 83. 00:04:40
    Improving our application
  • Урок 84. 00:06:11
    Why benchmarking isn't straight forward.
  • Урок 85. 00:05:52
    Setting up the code for benchmarking
  • Урок 86. 00:01:54
    A simple approach to micro-benchmarking
  • Урок 87. 00:04:38
    Adding in a warm-up period
  • Урок 88. 00:02:31
    Comparing two code alternatives
  • Урок 89. 00:05:11
    Using Macro-bencharmking
  • Урок 90. 00:04:19
    Installing the JMH benchmarking tool
  • Урок 91. 00:05:57
    Creating and running benchmarks
  • Урок 92. 00:03:10
    Using different benchmark modes
  • Урок 93. 00:01:41
    Instructions for exercise 1 (creating a flight recording)
  • Урок 94. 00:05:13
    Walkthrough of the solution & setting up ready for the next challenge
  • Урок 95. 00:01:55
    Instructions for exercise 2 (use JMH to macrobenchmark the project)
  • Урок 96. 00:05:18
    Walkthrough of the solution - part 1 setting up the code
  • Урок 97. 00:07:10
    Walkthrough of the solution - part 2 - integrating into JMH
  • Урок 98. 00:01:40
    Why it's important to understand how the different List implementations work
  • Урок 99. 00:01:40
    The 8 different list implementations
  • Урок 100. 00:02:38
    The CopyOnWriteArrayList
  • Урок 101. 00:06:03
    The ArrayList
  • Урок 102. 00:05:33
    Specifying the initial size of an ArrayList
  • Урок 103. 00:02:56
    The Vector
  • Урок 104. 00:01:19
    The Stack
  • Урок 105. 00:03:08
    The LinkedList
  • Урок 106. 00:06:58
    Choosing the optimal list type
  • Урок 107. 00:02:38
    Sorting lists
  • Урок 108. 00:03:18
    How Hashmaps Work - part 1
  • Урок 109. 00:01:20
    The role of the Hashcode
  • Урок 110. 00:03:47
    How Hashmaps Work - part 2
  • Урок 111. 00:04:31
    Specifying the initial size and factor of a HashMap
  • Урок 112. 00:02:32
    HashMap Performance
  • Урок 113. 00:04:16
    The rules for Hashcodes
  • Урок 114. 00:06:30
    Generating and optimising the Hashcode method
  • Урок 115. 00:00:50
    Optimising Hashmap Performance
  • Урок 116. 00:04:53
    How The LinkedHashMap Works
  • Урок 117. 00:01:51
    The HashTable and TreeMap
  • Урок 118. 00:01:42
    Introduction to how we'll compare coding options
  • Урок 119. 00:02:55
    Comparing primatives with objects
  • Урок 120. 00:03:47
    Comparing BigDecimals with Doubles
  • Урок 121. 00:04:47
    Using the StringBuilder
  • Урок 122. 00:06:42
    Comparing loops and streams
  • Урок 123. 00:03:58
    A note on logging
  • Урок 124. 00:06:46
    What is GraalVM?
  • Урок 125. 00:03:00
    Installing GraalVM
  • Урок 126. 00:06:36
    Using the Graal Virtual Machine
  • Урок 127. 00:02:25
    Using the Graal Compiler
  • Урок 128. 00:04:15
    Native image building with Graal
  • Урок 129. 00:03:35
    Using the Graal experimental features within OpenJDK
  • Урок 130. 00:07:05
    The principles of using other JVM Languages
  • Урок 131. 00:10:51
    Looking at bytecode with javap
  • Урок 132. 00:07:23
    Disassembling bytecode back to Java
  • Урок 133. 00:03:02
    The OpenJ9 Virtual Machine and what's coming up in future versions of Java