SlideShare a Scribd company logo
http://osama-oransa.blogspot.com/
 Introduction
 Basic Java Concepts
◦ Concurrency
◦ Memory Management
 Java Profiler Tools
◦ NetBeans Profiler
◦ JProfiler
◦ Eclipse TPTP
 Questions
Profiler Guided Java Performance Tuning
 Performance is one of the NFRs.
 Usually you have SLA for each transaction.
 2 types of performance issues :
◦ Performance Testing Results
 In Dev or Test environment.
◦ Production Performance Issues
 Difficult to handle.

Recommended for you

Java in flames
Java in flamesJava in flames
Java in flames

Java Colombo Meetup on 22nd March 2018 Speaker: Isuru Perera, Technical Lead at WSO2 Flame graphs are a visualization of profiled software and it was developed by Brendan Gregg, an industry expert in computing performance and cloud computing. Finding out why CPUs are busy is an important task when troubleshooting performance issues and we often use a sampling profiler to see which code-paths are hot. However, a profiler will dump a lot of data with thousands of lines and it is not easy to go through all data. With Flame Graphs, we can identify the most frequent code-paths quickly and accurately. Basically, a Flame Graph can simply visualize the stack traces output of a sampling profiler. There are many ways to profile Java applications and Java Flight Recorder (JFR) is a really good tool to profile a Java application with a very low overhead. I will show how we can generate a Flame Graph from a Java Flight Recording using the JFR Flame Graph tool (https://github.com/chrishantha/jfr-flame-graph) I developed. Since Flame Graphs can visualize any stack profiles, we can also use a Linux system profiler (perf) and create a Java Mixed-Mode Flame Graph, which will show how much CPU time is spent in Java methods, system libraries and the kernel. We can troubleshoot performance issues related to high CPU usage easily with a flame graph showing profile information from both system code paths and Java code paths. I will discuss how we can use the -XX:+PreserveFramePointer option in JDK and the perf system profiler to generate a Java Mixed-mode flame graph.

javaflame-graphsflames
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop

This document summarizes changes to the Java programming language from JDK 9 to JDK 16, including new features and modules. Some key points: - Java has moved to a six-month release cycle, delivering more features faster than before. - Modules were introduced in JDK 9 to improve modularity. Modules group related code and dependencies. - Incubator modules and preview features allow testing of non-final APIs before inclusion in the Java SE platform. - Local variable type inference using 'var' was added in JDK 10 for simpler declaration of local variables when types can be inferred. - Modules, the module system, and tools like jlink and jdeps help manage dependencies

javajdkopenjdk
JVM
JVMJVM
JVM

The Java Virtual Machine (JVM) is an abstract computing machine that executes Java bytecode. It has several core components including a class loader, memory areas like the heap and stack, and an execution engine. The execution engine initially interprets bytecode instructions but can optimize performance by just-in-time compiling frequently used bytecode into native machine code. The JVM provides a layer of abstraction between Java applications and the underlying hardware or operating system.

jvmjava virtual machine
 Problem Definition (UC, Scenario, Conditions,
User, ..etc…)
 Gather Information
 Try to replicate (if possible)
 Get all tools ready to use.
 Build your plan:
◦ Analyze Tools output.
◦ Code Inspection
◦ Potential fixes. (Google it …)
◦ Re-test.
 Better if :
◦ Relay on tools output.
◦ Less dependant on personal experience.
◦ Concrete (not abstract)
◦ Always comparative.
◦ Quick POC
◦ Proven from Google 
 Better if not:
◦ Trial and error approach.
◦ Optimize as you go.
 Hardware
◦ CPU
◦ Network
◦ Memory
◦ Storage
 Software
◦ Operating System
◦ Libraries, Drivers and Utilities.
◦ Application
 CPU :
◦ Detect root cause (anti-virus!)
◦ Change algorithm
◦ Increase CPU power.
 Network :
◦ Detect root cause (OS updates!)
◦ Change architecture.
 Memory :
◦ Root cause (memory leakage)
◦ add more memory, re-structure caching.
 Storage :
◦ Add storage, free more space (archive) , etc.

Recommended for you

DIY Java Profiling
DIY Java ProfilingDIY Java Profiling
DIY Java Profiling

This document discusses different approaches for profiling Java applications without using third-party tools. It begins by explaining the benefits of a do-it-yourself approach such as avoiding reliability and compliance concerns with tools. Various profiling types are then covered, including CPU profiling using wall clock time and calls, sampling, and memory profiling using JVM options. Bytecode manipulation is also presented as a method using ASM to add profiling code without changing sources. The document emphasizes learning the Java Virtual Machine and using its built-in capabilities for profiling purposes.

javaprogrammingprofiling
Why GC is eating all my CPU?
Why GC is eating all my CPU?Why GC is eating all my CPU?
Why GC is eating all my CPU?

The document discusses Java memory allocation profiling using the Aprof tool. It explains that Aprof works by instrumenting bytecode to inject calls that count and track object allocations. This allows it to provide insights on where memory is being allocated and identify potential performance bottlenecks related to garbage collection.

javagcprogramming
Software Profiling: Understanding Java Performance and how to profile in Java
Software Profiling: Understanding Java Performance and how to profile in JavaSoftware Profiling: Understanding Java Performance and how to profile in Java
Software Profiling: Understanding Java Performance and how to profile in Java

Guest lecture at University of Colombo School of Computing on 27th May 2017 Covers following topics: Software Profiling Measuring Performance Java Garbage Collection Sampling vs Instrumentation Java Profilers. Java Flight Recorder Java Just-in-Time (JIT) compilation Flame Graphs Linux Profiling

javalinuxsampling
 Good but sometimes you can consider:
◦ CPU :
 Use MT.
 Change workflow.
◦ Memory :
 Utilize more memory in caching.
 Change architecture.
 Google it.
 Continuous follow-up is essential , as new
tips always come:
◦ Use StringBuffer rather than the string
concatenation operator (+).
◦ Use primitive data types instead of objects.
◦ Use short-circuit boolean operators whenever
possible.
◦ Flatten objects as much as possible.
◦ Use the clone() method to avoid calling any
constructors.
◦ Don’t use exception to return flag.
 Vector, Stack, Hashtable are deprecated
 For single threaded use :
◦ ArrayList
◦ Deque
◦ HashMap
 For MT use : (a lot of other alternatives)
◦ CopyOnWriteArrayList
◦ ConcurrentLinkedDeque
◦ ConcurrentHashMap
Profiler Guided Java Performance Tuning

Recommended for you

The Java Memory Model
The Java Memory ModelThe Java Memory Model
The Java Memory Model

The Java Memory Model defines rules for how threads interact through shared memory in Java. It specifies rules for atomicity, ordering, and visibility of memory operations. The JMM provides guarantees for code safety while allowing compiler optimizations. It defines a happens-before ordering of instructions. The ordering rules and visibility rules ensure threads see updates from other threads as expected. The JMM implementation inserts memory barriers as needed to maintain the rules on different hardware platforms.

Java Concurrency, Memory Model, and Trends
Java Concurrency, Memory Model, and TrendsJava Concurrency, Memory Model, and Trends
Java Concurrency, Memory Model, and Trends

This document discusses concurrency in Java. It covers benefits and risks of threads, goals of concurrency utilities in Java, examples of executor services and thread pools, and best practices for thread safety including using immutable objects, atomic variables, and concurrent collections.

java concurrency
Multithreading and concurrency in android
Multithreading and concurrency in androidMultithreading and concurrency in android
Multithreading and concurrency in android

Here you will learn - What is Multithreading What is concurrency Process Vs Thread  Improvements and issues with concurrency Limits of concurrency gains Concurrency issues Threads pools with the Executor Framework AsyncTask and the UI Thread Code

multithreadandroidconcurrency
 Concurrency
 Memory Management
 Has a self-contained execution environment.
 A process generally has a complete, private
set of basic run-time resources; in particular,
each process has its own memory space.
 Most operating systems support Inter Process
Communication (IPC) resources, such as pipes
and sockets
 Most implementations of the Java virtual
machine run as a single process.
 A Java application can create additional
processes using a ProcessBuilder object.
 As simple as :
Process pb = new
ProcessBuilder("myCommand",
"myArg").start();
 But can be more complex by defining the
Input, Output , Error streams or inherit them
using: pb.inheritIO()
public Process start() throws IOException
 Both processes and threads provide an
execution environment, but creating a new
thread requires fewer resources than creating
a new process.
 Threads exist within a process — every
process has at least one.
 Threads share the process's resources,
including memory and open files.
 This makes for efficient, but potentially
problematic, communication.

Recommended for you

Concurrency with java
Concurrency with javaConcurrency with java
Concurrency with java

This document discusses various programming paradigms and concurrency concepts in Java. It covers single and multi-process programming, multi-threading, processes, threads, synchronization, deadlocks, and strategies for designing objects to be thread-safe such as immutability, locking, and containment. It also summarizes high-level concurrency utilities in Java like locks, executors, concurrent collections, and atomic variables.

Java concurrency in practice
Java concurrency in practiceJava concurrency in practice
Java concurrency in practice

Every Java developer knows that multithreading is the root of all evil and it is quite hard to write correct code for concurrent environment. But what tasks do exist in real commercial development except running code in asynchronous way? In this talk I will present several tasks from my real projects and solutions we designed for them. This talk is very application oriented and allows participants to extend their vision of concurrent programming.

concurrencyjava
Beyond Unit Testing
Beyond Unit TestingBeyond Unit Testing
Beyond Unit Testing

The document discusses various techniques for testing large, distributed systems beyond traditional unit testing. It recommends embracing virtualization to simulate production environments and deploying applications and tests across multiple virtual machines. Various tools are presented to help with distributed, automated testing including Cactus for in-container testing, Selenium and jsUnit for browser testing, and SmartFrog as a framework for describing, deploying and managing distributed service components and tests. The document calls for a focus on system-level tests that simulate the full production environment and integrate testing across distributed systems.

javatestingjunit
 Every application has at least one thread — or
several, if you count "system" threads ( like
memory management ).
 But from the application programmer's point
of view, you start with just one thread, called
the main thread.
 This thread has the ability to create additional
threads.
 Using the Interface or extending the Class :
public class HelloRunnable implements Runnable {
public void run() {
System.out.println("Hello!");
}
public static void main(String args[]) {
(new Thread(new HelloRunnable())).start();
}
}
 Each object in Java is associated with a
monitor, which a thread can lock or unlock.
 Only one thread at a time may hold a lock on
a monitor.
 A synchronized statement :
◦ It then attempts to perform a lock action on that
object's monitor and does not proceed further until
the lock action has successfully.
 A synchronized method automatically
performs a lock action when it is invoked;
◦ Its body is not executed until the lock action has
successfully completed.
◦ If the method is an instance method :
 It locks the monitor associated with the instance for
which it was invoked (this).
◦ If the method is static :
 It locks the monitor associated with the Class object
that represents the class in which the method is
defined.

Recommended for you

Wait for your fortune without Blocking!
Wait for your fortune without Blocking!Wait for your fortune without Blocking!
Wait for your fortune without Blocking!

Slides from tech talk about the art of non-blocking waiting in Java with LockSupport.park/unpark and AbstractQueuedSynchronizer. Presented on JPoint 2016 Conference.

non-blockinglock-freeconcurrency
Java Threads: Lightweight Processes
Java Threads: Lightweight ProcessesJava Threads: Lightweight Processes
Java Threads: Lightweight Processes

Guest lecture at Informatics Institute of Technology (IIT) on 24th November 2018 Covers following topics: Concurrency Processes and Threads Concurrent vs Parallel Programming Preemptive multitasking Context Switches Java Threads Thread Dumps Java Troubleshooting, Profiling, Monitoring and Management Tools Synchronization Thread Interference Memory Consistency Errors Synchronized Methods Intrinsic Locks and Synchronization Atomic Access Liveness Deadlock Starvation Livelock Flame Graphs

threadsjavaconcurrency
Inside the JVM - Follow the white rabbit! / Breizh JUG
Inside the JVM - Follow the white rabbit! / Breizh JUGInside the JVM - Follow the white rabbit! / Breizh JUG
Inside the JVM - Follow the white rabbit! / Breizh JUG

Presentation given at the Rennes (FR) Java User Group in Feb 2019. How do we go from your Java code to the CPU assembly that actually runs it? Using high level constructs has made us forget what happens behind the scenes, which is however key to write efficient code. Starting from a few lines of Java, we explore the different layers that constribute to running your code: JRE, byte code, structure of the OpenJDK virtual machine, HotSpot, intrinsic methds, benchmarking. An introductory presentation to these low-level concerns, based on the practical use case of optimizing 6 lines of code, so that hopefully you to want to explore further!

javajvmperformance
Profiler Guided Java Performance Tuning
 Use Generational Collection
◦ Memory is divided into generations, that is,
separate pools holding objects of different ages.
 A garbage collector is responsible for
◦ Allocating memory
◦ Ensuring that any referenced objects remain in
memory
◦ Recovering memory used by objects that are no
longer reachable from references in executing code.
 Serial versus Parallel
◦ When parallel collection is used, the task of garbage
collection is split into parts and those subparts are
executed simultaneously, on different CPUs.
 Concurrent versus Stop-the-world
◦ Concurrent need extra care, as it is operating over
objects that might be updated at the same time by the
application.
◦ Adds some overhead and requires a larger heap size.
◦ Stop-the-world garbage collection is simpler since the
heap is frozen and objects are not changing during the
collection.
◦ It may be undesirable for some applications to be
paused.

Recommended for you

Build, logging, and unit test tools
Build, logging, and unit test toolsBuild, logging, and unit test tools
Build, logging, and unit test tools

This document provides an overview of common tools used for building, logging, and unit testing Java applications: Maven for build automation, Log4J2 and SLF4J for logging, and JUnit for unit testing. It describes the purpose and basic usage of each tool. For Maven, it covers the standard project layout, dependencies, lifecycle, and POM file. For logging, it explains Log4J2 configuration and best practices. And for testing, it introduces the JUnit framework and common assertions.

log4j 2javamaven
DotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NETDotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NET

The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!

.netdotnetmemory management
Hands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandHands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx Poland

This document summarizes a hands-on performance workshop. It introduces the speaker and explains that the workshop will focus on hands-on experience using performance tools. The agenda outlines setting up the environment, an overview of performance factors, collecting performance data using tools like GC logs and thread dumps, and interpreting that data using tools like VisualVM. It notes some topics that won't be covered and provides instructions for optional extension activities.

java eedevoxxconference
 Compacting versus Non-compacting
◦ Make it easy and fast to allocate a new object at
the first free location (One pointer is enough)
◦ Non-compacting collector releases the space
utilized by garbage objects in-place.
◦ Faster completion of garbage collection, but the
drawback is potential fragmentation. (Need array of
pointers)
◦ In general, it is more expensive to allocate from a
heap with in-place deallocation than from a
compacted heap.
 Most objects are initially allocated in Eden.
◦ A few large objects may be allocated directly in the
old generation
 The survivor spaces hold objects that have
survived at least one young generation
collection
◦ i.e. given additional chances to die before being
considered “old enough” to be promoted to the old
generation.
 Both young and old collections are done
serially (using a single CPU), in a stop-the
world fashion.
 Application execution is halted while
collection is taking place
Profiler Guided Java Performance Tuning

Recommended for you

Java profiling Do It Yourself
Java profiling Do It YourselfJava profiling Do It Yourself
Java profiling Do It Yourself

This document summarizes tools and techniques for Java profiling and diagnostics. It discusses using JMX, JVMTI, and the Attach API to gather information on threading, memory usage, garbage collection, and perform actions like heap dumps. It also introduces the SJK toolkit which provides commands for profiling tasks and the Sigar and BTrace tools. Real-world uses of profiling techniques are presented, like benchmarking and diagnosing production systems. Future ideas proposed include a visual thread analyzer and scripting-based heap dump exploration.

profilingjavaperfomance
Diagnosing Your Application on the JVM
Diagnosing Your Application on the JVMDiagnosing Your Application on the JVM
Diagnosing Your Application on the JVM

This document discusses various tools for diagnosing and monitoring applications running on the Java Virtual Machine (JVM). It begins with an overview of demo tools like jps, jcmd, jstat, and Java Mission Control. It then discusses internals of how these tools access a running JVM through mechanisms like JMX, attaching to processes, and the jvmstat performance data file. The document concludes with a discussion of future improvements including more diagnostic commands, JMX enhancements, improved JVM logging, and removing older tools.

serviceabilityjavaonejava
JavaOne 2014: Java Debugging
JavaOne 2014: Java DebuggingJavaOne 2014: Java Debugging
JavaOne 2014: Java Debugging

This document discusses tools and techniques for troubleshooting Java applications. It begins with an introduction to the speaker, Chris Bailey, and his background in Java monitoring and diagnostics. It then covers various approaches for monitoring memory usage at both the operating system and Java runtime levels, including tools for capturing garbage collection data and heap dumps. Finally, it discusses performance analysis and profiling CPU and lock usage at the application level.

javaonetroubleshootingjava
Profiler Guided Java Performance Tuning
 The collector then performs sliding
compaction, sliding the live objects towards
the beginning of the old generation space,
leaving any free space in a single contiguous
chunk at the opposite end.
 (mark-sweep-compact collection algorithm)
 Non-compacting..
Profiler Guided Java Performance Tuning

Recommended for you

Debugging Your Production JVM
Debugging Your Production JVMDebugging Your Production JVM
Debugging Your Production JVM

This is a talk I did for JavaOne 2009. The focus of the talk was memory management and system monitoring with freely available tools that are in the jdk or open source.

memorymanagementjava
Towards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages ToolchainTowards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages Toolchain

The main body of work related to supporting dynamic languages on the JVM at Oracle today is done within the Nashorn project. While on the surface it looks like we're busy creating a JavaScript runtime, in reality JavaScript is only the beginning, and not the ultimate goal. Nashorn has served as the proving ground for new approaches for implementing a dynamic language on top of the JVM, and we're eager to – once solidified – crystallize these into a reusable dynamic language implementer's toolkit. We have faced challenges of optimally mapping JavaScript local variables to JVM types (or: "hey, there's a static type inference algorithm in your dynamic language compiler"), doing liveness analysis, cutting up methods too large to fit into a single JVM method, efficiently representing large array and object literals in compiled code, creating a system for on-demand compilation of several type-specialized variants of the same function, and more. Along the way, we have reached the limits of our initial internal representation (fun fact: you can't do liveness analysis on an AST. We learned it the hard way.) and started sketching up an intermediate representation that would be easy to emit from a dynamic language compiler, and that could be taken over by a toolchain to perform the operations described above then on it and finally output standard Java bytecode for JIT to take over. Elevator pitch: like LLVM, but for dynamic languages on the JVM.

dynamic languagesnashorncompiler
Hotspot Garbage Collection - The Useful Parts
Hotspot Garbage Collection - The Useful PartsHotspot Garbage Collection - The Useful Parts
Hotspot Garbage Collection - The Useful Parts

The document discusses garbage collection in the Java HotSpot virtual machine. It covers the basics of garbage collection theory, HotSpot's memory organization and different collectors. The presentation also discusses how to read and analyze GC logs to understand application performance and identify issues like memory leaks or premature promotion.

java virtual machinejavaperformance tuning
Profiler Guided Java Performance Tuning
-Xms<min> //initial heap size
-Xmx<max> //max heap size
-XX:PermSize= //initial perm size
-XX:MaxPermSize= //max perm size
-XX:MinHeapFreeRatio=<minimum>
-XX:MaxHeapFreeRatio=<maximum>
-XX:SurvivorRatio=6
-XX:+UseSerialGC
-XX:+UseParallelGC
-XX:+UseConcMarkSweepGC
-XX:ParallelGCThreads=<N>
-XX:+HeapDumpOnOutOfMemoryError
 -verbose:gc
 [GC 325816K->83372K(776768K), 0.2454258 secs]
[Full GC 267628K->83769K(776768K), 1.8479984 secs]
 [GC (1)->(2)(3), (4) secs]
 (1->2) Combined size of live objects before and
after garbage collection.
 (3) Amount of space usable for java objects
without requesting more memory from the
operating system.
 (4) time taken to perform GC.
 -XX:+PrintGCDetails : print more details
 -XX:+PrintGCTimeStamps : print timestamp
 Variant :
◦ Java heap space / Requested array size exceeds VM limit
= heap size issue
◦ PermGen space = no memory for creating new class.
◦ unable to create new native thread / <reason>
<stacktrace> (Native method) = no memory available for
allocation of Thread (native stacktrace)
◦ request <size> bytes for <reason>. Out of swap space?
= no memory left in OS.
 Doesn’t mean no memory left :
◦ If >98% of the total time is spent in GC and only less
than 2% of the heap is recovered.
◦ Adding element to Array require new Array creation, and
no enough space in any generation.

Recommended for you

Efficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java ApplicationsEfficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java Applications

This presentation discusses strategies to estimate and control the memory use of multi-threaded java applications. It includes a quick overview of how the JVM uses memory, followed by techniques to estimate the memory usage of various types of objects during testing. This knowledge is then used as the basis for a runtime scheme to estimate and control the memory use of multiple threads. The final part of the presentation describes how to implement robust handling for unchecked exceptions, especially Out Of Memory (OOM) errors, and how to ensure threads stop properly when unexpected events occur.

Game Development Using HTML 5
Game Development Using HTML 5Game Development Using HTML 5
Game Development Using HTML 5

The document discusses HTML5 game development. It covers various topics like game concepts, HTML5 components for games, developing a game step-by-step and advanced topics. It focuses on HTML5 canvas for graphics, local storage for data, and describes functions for animations, interactions, controls and other elements needed for game development. The document provides examples for drawing, colors, images and text on the canvas.

game development using html 5
Real Life Java EE Performance Tuning
Real Life Java EE Performance TuningReal Life Java EE Performance Tuning
Real Life Java EE Performance Tuning

The document discusses several case studies of performance issues with Java EE applications and provides solutions. It emphasizes the importance of understanding the entire system, including infrastructure components, and using tools like monitoring, thread dumps, and logging to observe problems before hypothesizing and testing solutions. The first case study found a server with debug logging enabled slowing it down. The second was due to firewalls terminating idle database connections. The third involved inefficient AJAX and an underpowered load tester.

javaopen sourceperformance tuning
Profiler Guided Java Performance Tuning
 NetBeans Profiler
 Eclipse : TPTP, MAT, Profiling, JVMMonitor,
etc..
 Java : Jconsole, jstat
 JProfiler
 AppDynamics
 JBossProfiler
 JProbe
 JRAT, JMAP, etc…
 Location: Local or Remote.
 GUI: Online or Offline.
 Time: Attach or started for profiling.
 CPU: Sampled or Instrumented
 Classes: Filtered or not filtered.
 Type : Web Server or Standalone.
 etc..
 We will try 3 profilers:
◦ NetBeans Profiler
◦ JProfiler
◦ Eclipse TPTP

Recommended for you

JPA 2.1 performance tuning tips
JPA 2.1 performance tuning tipsJPA 2.1 performance tuning tips
JPA 2.1 performance tuning tips

For More information, refer to Java EE 7 performance tuning and optimization book: The book is published by Packt Publishing: http://www.packtpub.com/java-ee-7-performance-tuning-and-optimization/book

jpa performance tuning tipsjava persistence 2.1
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments

Große Entwicklungsabteilungen stehen oft vor dem Problem einheitlicher Entwicklungsprozesse und Werkzeuge. Nach einiger Zeit hat jedes Projekt eigene Prozesse und Werkzeuge etabliert. Dies ist nicht im Sinne der Entwicklungsabteilung. Softwaresysteme müssen i. d. R. über Jahre hinweg gewartet und erweitert werden - oft von einem Team, das sich neu in die Anwendung einarbeiten muss. Nicht selten stellt die Rekonstruktion der Entwicklungsumgebung einen erheblichen Aufwand dar. Dieser Vortrag beschreibt - anhand eines Erfahrungsberichts - den Aufbau einer strukturierten Entwicklungsumgebung, die auch für grosse Entwicklungsabteilungen skaliert. - Zentrale Projekt- und Codeverwaltung (ähnlich wie Sourceforge) - Buildmanagement mit Maven - Entwicklungswerkzeuge basierend auf Maven und Eclipse - Installierbare Teamserver mit Virtualisierungstechnologie für Continuous Integration

antmanagementbuild
Everything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @TwitterEverything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @Twitter

Summarizes about a year worth of experiences and case studies in performance tuning the JVM for various services at Twitter.

jvmtuningjava
Profiler Guided Java Performance Tuning
Profiler Guided Java Performance Tuning
 Detecting hotspots
Profiler Guided Java Performance Tuning

Recommended for you

Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools

How to identify memory leaks in java applications, thread contentions, using jdk in built tools to identify performance bottlenecks

optimizationperformance tuningmonitoring
Intro To .Net Threads
Intro To .Net ThreadsIntro To .Net Threads
Intro To .Net Threads

This document provides an overview of threading concepts in .NET, including: 1) Threads allow concurrent execution within a process and each thread has its own call stack. The CLR uses thread pools to improve efficiency of asynchronous operations. 2) Thread synchronization is required when threads access shared resources to prevent race conditions and deadlocks. The .NET framework provides classes like Monitor, Lock, and Interlocked for thread synchronization. 3) Limiting threads improves performance on single-CPU systems due to reduced context switching overhead.

threadsmicrosoftnet
JVM Performance Tuning
JVM Performance TuningJVM Performance Tuning
JVM Performance Tuning

An opinionated position on JVM performance tuning with practical application. Includes expertise from Jason Goth

jvmjavaperformance
 Blocking Threads
 Heap is growing …
Profiler Guided Java Performance Tuning
Profiler Guided Java Performance Tuning

Recommended for you

Java programing considering performance
Java programing considering performanceJava programing considering performance
Java programing considering performance

The document discusses several topics related to optimizing Java program performance including: 1. Using buffering and non-blocking I/O for file reading/writing to improve efficiency. 2. Minimizing network calls by retrieving related data in one call and using design patterns like the session facade. 3. Reusing objects when possible rather than constantly creating new instances to reduce garbage collection overhead.

CrawlerLD - Distributed crawler for linked data
CrawlerLD - Distributed crawler for linked dataCrawlerLD - Distributed crawler for linked data
CrawlerLD - Distributed crawler for linked data

In this presentation, I show the improvements made on the CrawlerLD tool to make it distributable and have a better performance.

linked datasemantic webcrawler
Efficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java ApplicationsEfficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java Applications

This presentation discusses strategies to estimate and control the memory use of multi-threaded java applications. It includes a quick overview of how the JVM uses memory, followed by techniques to estimate the memory usage of various types of objects during testing. This knowledge is then used as the basis for a runtime scheme to estimate and control the memory use of multiple threads. The final part of the presentation describes how to implement robust handling for unchecked exceptions, especially Out Of Memory (OOM) errors, and how to ensure threads stop properly when unexpected events occur.

java
 Easy actually it is the Same way 
Profiler Guided Java Performance Tuning
Profiler Guided Java Performance Tuning
 Attach to the running server …

Recommended for you

Exploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinarExploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinar

The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!

dotmemoryclrmdcsharp
Aleksandr_Butenko_Mobile_Development
Aleksandr_Butenko_Mobile_DevelopmentAleksandr_Butenko_Mobile_Development
Aleksandr_Butenko_Mobile_Development

Multitasking allows multiple tasks to share system resources like the CPU by rapidly switching between tasks. In iOS, multithreading uses either Cocoa threads via the NSThread class or POSIX threads. Threads offer advantages like lower overhead than processes but also challenges like added complexity. Common threading techniques include atomic operations, locks, conditions, and Grand Central Dispatch which handles scheduling tasks across threads.

ciklummobile development
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...

The .NET Garbage Collector (GC) is really cool. It helps providing our applications with virtually unlimited memory, so we can focus on writing code instead of manually freeing up memory. But how does .NET manage that memory? What are hidden allocations? Are strings evil? It still matters to understand when and where memory is allocated. In this talk, we’ll go over the base concepts of .NET memory management and explore how .NET helps us and how we can help .NET – making our apps better. Expect profiling, Intermediate Language (IL), ClrMD and more!

jetbrains.netmemory
Profiler Guided Java Performance Tuning
 Add triggers to define what to record and to
save the snapshots..
 The session is added to configuration file
with “id” example :
◦ <session id="119"
◦ ….
◦ </session>
 Now in run command add the following:
 -
agentpath:D:PROGRA~1JPROFI~1binwind
owsjprofilerti.dll=offline,id=119;
Profiler Guided Java Performance Tuning

Recommended for you

Looming Marvelous - Virtual Threads in Java Javaland.pdf
Looming Marvelous - Virtual Threads in Java Javaland.pdfLooming Marvelous - Virtual Threads in Java Javaland.pdf
Looming Marvelous - Virtual Threads in Java Javaland.pdf

Nowadays we have 2 options for concurrency in Java: * simple, synchronous, blocking code with limited scalability that tracks well linearly at runtime, or. * complex, asynchronous libraries with high scalability that are harder to handle. Project Loom aims to bring together the best aspects of these two approaches and make them available to developers. In the talk, I'll briefly cover the history and challenges of concurrency in Java before we dive into Loom's approaches and do some behind-the-scenes implementation. To manage so many threads reasonably needs some structure - for this there are proposals for "Structured Concurrency" which we will also look at. Some examples and comparisons to test Loom will round up the talk. Project Loom is included in Java 19 and 20 as a preview feature, it can already be tested how well it works with our applications and libraries. Spoiler: Pretty good.

 
by jexp
javaloomvirtual threads
multithreading
multithreadingmultithreading
multithreading

This document provides an overview of multithreading in Java. It describes how multithreading allows an application to perform multiple tasks simultaneously through the use of threads. It explains that threads allow applications to remain responsive even when long tasks are being performed. The document outlines how threads work in Java, including how to create threads using the Thread and Runnable classes, the different states threads can be in, and common concurrency issues that can arise with multithreading like race conditions.

Quantifying the Performance of Garbage Collection vs. Explicit Memory Management
Quantifying the Performance of Garbage Collection vs. Explicit Memory ManagementQuantifying the Performance of Garbage Collection vs. Explicit Memory Management
Quantifying the Performance of Garbage Collection vs. Explicit Memory Management

This talk answers an age-old question: is garbage collection faster/slower/the same speed as malloc/free? We introduce oracular memory management, an approach that lets us measure unaltered Java programs as if they used malloc and free. The result: a good GC can match the performance of a good allocator, but it takes 5X more space. If physical memory is tight, however, conventional garbage collectors suffer an order-of-magnitude performance penalty.

Profiler Guided Java Performance Tuning
 Same everything 
Profiler Guided Java Performance Tuning
 For More information refer to Java EE 7
performance tuning and optimization book.
 The book is published by Packt Publishing.
◦ http://www.packtpub.com/java-ee-7-
performance-tuning-and-optimization/book
◦ http://www.amazon.com/dp/178217642X/?tag=pa
cktpubli-20
◦ http://www.amazon.co.uk/dp/178217642X/?tag=p
acktpubli-21

Recommended for you

Java Multithreading
Java MultithreadingJava Multithreading
Java Multithreading

This document discusses Java multithreading. It explains that multithreading allows an application to have multiple points of execution within the same memory space. It outlines how Java supports multithreading through the Thread class and Runnable interface. It also describes concurrency issues that can arise from multithreading, such as race conditions, and how to address them using techniques like synchronized access and locking.

Java multithreading
Java multithreadingJava multithreading
Java multithreading

This document discusses Java multithreading. It begins by outlining the objectives of understanding multithreading, Java's mechanism, concurrency issues, and synchronized access. It then explains that multithreading allows multiple threads to run simultaneously within a process's memory space. Finally, it covers key topics like creating and running threads, thread states, priorities, and ensuring thread-safe access to shared resources through synchronization.

Java
JavaJava
Java

This document discusses multithreading in Java. It begins by explaining that multithreading allows multiple tasks to be performed concurrently by having each task executed in a separate thread. It then covers key topics like how threads are implemented in Java using the Thread class and Runnable interface, how to create and manage threads, common thread states, ensuring thread safety through synchronization, and techniques to improve synchronization performance.

 http://www.oracle.com/technetwork/java/javase
/memorymanagement-whitepaper-150215.pdf
 http://docs.oracle.com/javase/specs/jvms/se7/h
tml/jvms-2.html
 http://www.oracle.com/technetwork/java/javase
/gc-tuning-6-140523.html
 http://docs.oracle.com/javase/tutorial/essential/
concurrency/procthread.html
 http://java-source.net/open-source/profilers
 www.ej-technologies.com/
 http://profiler.netbeans.org/
 http://www.eclipse.org/tptp/
 http://www.petefreitag.com/articles/gctuning/
 Introduction
 Basic Java Concepts
◦ Concurrency
◦ Memory Management
 Java Profiler Tools
◦ NetBeans Profiler
◦ JProfiler
◦ Eclipse TPTP
http://osama-oransa.blogspot.com/

More Related Content

What's hot

Java performance tuning
Java performance tuningJava performance tuning
Java performance tuning
Jerry Kurian
 
Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)
aragozin
 
So You Want To Write Your Own Benchmark
So You Want To Write Your Own BenchmarkSo You Want To Write Your Own Benchmark
So You Want To Write Your Own Benchmark
Dror Bereznitsky
 
Java in flames
Java in flamesJava in flames
Java in flames
Isuru Perera
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
Simon Ritter
 
JVM
JVMJVM
DIY Java Profiling
DIY Java ProfilingDIY Java Profiling
DIY Java Profiling
Roman Elizarov
 
Why GC is eating all my CPU?
Why GC is eating all my CPU?Why GC is eating all my CPU?
Why GC is eating all my CPU?
Roman Elizarov
 
Software Profiling: Understanding Java Performance and how to profile in Java
Software Profiling: Understanding Java Performance and how to profile in JavaSoftware Profiling: Understanding Java Performance and how to profile in Java
Software Profiling: Understanding Java Performance and how to profile in Java
Isuru Perera
 
The Java Memory Model
The Java Memory ModelThe Java Memory Model
The Java Memory Model
CA Technologies
 
Java Concurrency, Memory Model, and Trends
Java Concurrency, Memory Model, and TrendsJava Concurrency, Memory Model, and Trends
Java Concurrency, Memory Model, and Trends
Carol McDonald
 
Multithreading and concurrency in android
Multithreading and concurrency in androidMultithreading and concurrency in android
Multithreading and concurrency in android
Rakesh Jha
 
Concurrency with java
Concurrency with javaConcurrency with java
Concurrency with java
Hoang Nguyen
 
Java concurrency in practice
Java concurrency in practiceJava concurrency in practice
Java concurrency in practice
Mikalai Alimenkou
 
Beyond Unit Testing
Beyond Unit TestingBeyond Unit Testing
Beyond Unit Testing
Steve Loughran
 
Wait for your fortune without Blocking!
Wait for your fortune without Blocking!Wait for your fortune without Blocking!
Wait for your fortune without Blocking!
Roman Elizarov
 
Java Threads: Lightweight Processes
Java Threads: Lightweight ProcessesJava Threads: Lightweight Processes
Java Threads: Lightweight Processes
Isuru Perera
 
Inside the JVM - Follow the white rabbit! / Breizh JUG
Inside the JVM - Follow the white rabbit! / Breizh JUGInside the JVM - Follow the white rabbit! / Breizh JUG
Inside the JVM - Follow the white rabbit! / Breizh JUG
Sylvain Wallez
 
Build, logging, and unit test tools
Build, logging, and unit test toolsBuild, logging, and unit test tools
Build, logging, and unit test tools
Allan Huang
 
DotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NETDotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NET
Maarten Balliauw
 

What's hot (20)

Java performance tuning
Java performance tuningJava performance tuning
Java performance tuning
 
Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)Virtualizing Java in Java (jug.ru)
Virtualizing Java in Java (jug.ru)
 
So You Want To Write Your Own Benchmark
So You Want To Write Your Own BenchmarkSo You Want To Write Your Own Benchmark
So You Want To Write Your Own Benchmark
 
Java in flames
Java in flamesJava in flames
Java in flames
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
 
JVM
JVMJVM
JVM
 
DIY Java Profiling
DIY Java ProfilingDIY Java Profiling
DIY Java Profiling
 
Why GC is eating all my CPU?
Why GC is eating all my CPU?Why GC is eating all my CPU?
Why GC is eating all my CPU?
 
Software Profiling: Understanding Java Performance and how to profile in Java
Software Profiling: Understanding Java Performance and how to profile in JavaSoftware Profiling: Understanding Java Performance and how to profile in Java
Software Profiling: Understanding Java Performance and how to profile in Java
 
The Java Memory Model
The Java Memory ModelThe Java Memory Model
The Java Memory Model
 
Java Concurrency, Memory Model, and Trends
Java Concurrency, Memory Model, and TrendsJava Concurrency, Memory Model, and Trends
Java Concurrency, Memory Model, and Trends
 
Multithreading and concurrency in android
Multithreading and concurrency in androidMultithreading and concurrency in android
Multithreading and concurrency in android
 
Concurrency with java
Concurrency with javaConcurrency with java
Concurrency with java
 
Java concurrency in practice
Java concurrency in practiceJava concurrency in practice
Java concurrency in practice
 
Beyond Unit Testing
Beyond Unit TestingBeyond Unit Testing
Beyond Unit Testing
 
Wait for your fortune without Blocking!
Wait for your fortune without Blocking!Wait for your fortune without Blocking!
Wait for your fortune without Blocking!
 
Java Threads: Lightweight Processes
Java Threads: Lightweight ProcessesJava Threads: Lightweight Processes
Java Threads: Lightweight Processes
 
Inside the JVM - Follow the white rabbit! / Breizh JUG
Inside the JVM - Follow the white rabbit! / Breizh JUGInside the JVM - Follow the white rabbit! / Breizh JUG
Inside the JVM - Follow the white rabbit! / Breizh JUG
 
Build, logging, and unit test tools
Build, logging, and unit test toolsBuild, logging, and unit test tools
Build, logging, and unit test tools
 
DotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NETDotNetFest - Let’s refresh our memory! Memory management in .NET
DotNetFest - Let’s refresh our memory! Memory management in .NET
 

Viewers also liked

Hands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandHands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx Poland
C2B2 Consulting
 
Java profiling Do It Yourself
Java profiling Do It YourselfJava profiling Do It Yourself
Java profiling Do It Yourself
aragozin
 
Diagnosing Your Application on the JVM
Diagnosing Your Application on the JVMDiagnosing Your Application on the JVM
Diagnosing Your Application on the JVM
Staffan Larsen
 
JavaOne 2014: Java Debugging
JavaOne 2014: Java DebuggingJavaOne 2014: Java Debugging
JavaOne 2014: Java Debugging
Chris Bailey
 
Debugging Your Production JVM
Debugging Your Production JVMDebugging Your Production JVM
Debugging Your Production JVM
kensipe
 
Towards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages ToolchainTowards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages Toolchain
Attila Szegedi
 
Hotspot Garbage Collection - The Useful Parts
Hotspot Garbage Collection - The Useful PartsHotspot Garbage Collection - The Useful Parts
Hotspot Garbage Collection - The Useful Parts
jClarity
 
Efficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java ApplicationsEfficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java Applications
pkoza
 
Game Development Using HTML 5
Game Development Using HTML 5Game Development Using HTML 5
Game Development Using HTML 5
osa_ora
 
Real Life Java EE Performance Tuning
Real Life Java EE Performance TuningReal Life Java EE Performance Tuning
Real Life Java EE Performance Tuning
C2B2 Consulting
 
JPA 2.1 performance tuning tips
JPA 2.1 performance tuning tipsJPA 2.1 performance tuning tips
JPA 2.1 performance tuning tips
osa_ora
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
Thorsten Kamann
 
Everything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @TwitterEverything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @Twitter
Attila Szegedi
 

Viewers also liked (13)

Hands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandHands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx Poland
 
Java profiling Do It Yourself
Java profiling Do It YourselfJava profiling Do It Yourself
Java profiling Do It Yourself
 
Diagnosing Your Application on the JVM
Diagnosing Your Application on the JVMDiagnosing Your Application on the JVM
Diagnosing Your Application on the JVM
 
JavaOne 2014: Java Debugging
JavaOne 2014: Java DebuggingJavaOne 2014: Java Debugging
JavaOne 2014: Java Debugging
 
Debugging Your Production JVM
Debugging Your Production JVMDebugging Your Production JVM
Debugging Your Production JVM
 
Towards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages ToolchainTowards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages Toolchain
 
Hotspot Garbage Collection - The Useful Parts
Hotspot Garbage Collection - The Useful PartsHotspot Garbage Collection - The Useful Parts
Hotspot Garbage Collection - The Useful Parts
 
Efficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java ApplicationsEfficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java Applications
 
Game Development Using HTML 5
Game Development Using HTML 5Game Development Using HTML 5
Game Development Using HTML 5
 
Real Life Java EE Performance Tuning
Real Life Java EE Performance TuningReal Life Java EE Performance Tuning
Real Life Java EE Performance Tuning
 
JPA 2.1 performance tuning tips
JPA 2.1 performance tuning tipsJPA 2.1 performance tuning tips
JPA 2.1 performance tuning tips
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 
Everything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @TwitterEverything I Ever Learned About JVM Performance Tuning @Twitter
Everything I Ever Learned About JVM Performance Tuning @Twitter
 

Similar to Profiler Guided Java Performance Tuning

Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Haribabu Nandyal Padmanaban
 
Intro To .Net Threads
Intro To .Net ThreadsIntro To .Net Threads
Intro To .Net Threads
rchakra
 
JVM Performance Tuning
JVM Performance TuningJVM Performance Tuning
JVM Performance Tuning
Jeremy Leisy
 
Java programing considering performance
Java programing considering performanceJava programing considering performance
Java programing considering performance
Roger Xia
 
CrawlerLD - Distributed crawler for linked data
CrawlerLD - Distributed crawler for linked dataCrawlerLD - Distributed crawler for linked data
CrawlerLD - Distributed crawler for linked data
Raphael do Vale
 
Efficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java ApplicationsEfficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java Applications
Phillip Koza
 
Exploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinarExploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinar
Maarten Balliauw
 
Aleksandr_Butenko_Mobile_Development
Aleksandr_Butenko_Mobile_DevelopmentAleksandr_Butenko_Mobile_Development
Aleksandr_Butenko_Mobile_Development
Ciklum
 
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
Maarten Balliauw
 
Looming Marvelous - Virtual Threads in Java Javaland.pdf
Looming Marvelous - Virtual Threads in Java Javaland.pdfLooming Marvelous - Virtual Threads in Java Javaland.pdf
Looming Marvelous - Virtual Threads in Java Javaland.pdf
jexp
 
multithreading
multithreadingmultithreading
multithreading
Rajkattamuri
 
Quantifying the Performance of Garbage Collection vs. Explicit Memory Management
Quantifying the Performance of Garbage Collection vs. Explicit Memory ManagementQuantifying the Performance of Garbage Collection vs. Explicit Memory Management
Quantifying the Performance of Garbage Collection vs. Explicit Memory Management
Emery Berger
 
Java Multithreading
Java MultithreadingJava Multithreading
Java Multithreading
Rajkattamuri
 
Java multithreading
Java multithreadingJava multithreading
Java multithreading
Mohammed625
 
Java
JavaJava
Java
JavaJava
Using the big guns: Advanced OS performance tools for troubleshooting databas...
Using the big guns: Advanced OS performance tools for troubleshooting databas...Using the big guns: Advanced OS performance tools for troubleshooting databas...
Using the big guns: Advanced OS performance tools for troubleshooting databas...
Nikolay Savvinov
 
Multithreading
MultithreadingMultithreading
Multithreading
F K
 
Slot02 concurrency1
Slot02 concurrency1Slot02 concurrency1
Slot02 concurrency1
Viên Mai
 
Java Garbage Collection - How it works
Java Garbage Collection - How it worksJava Garbage Collection - How it works
Java Garbage Collection - How it works
Mindfire Solutions
 

Similar to Profiler Guided Java Performance Tuning (20)

Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
 
Intro To .Net Threads
Intro To .Net ThreadsIntro To .Net Threads
Intro To .Net Threads
 
JVM Performance Tuning
JVM Performance TuningJVM Performance Tuning
JVM Performance Tuning
 
Java programing considering performance
Java programing considering performanceJava programing considering performance
Java programing considering performance
 
CrawlerLD - Distributed crawler for linked data
CrawlerLD - Distributed crawler for linked dataCrawlerLD - Distributed crawler for linked data
CrawlerLD - Distributed crawler for linked data
 
Efficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java ApplicationsEfficient Memory and Thread Management in Highly Parallel Java Applications
Efficient Memory and Thread Management in Highly Parallel Java Applications
 
Exploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinarExploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinar
 
Aleksandr_Butenko_Mobile_Development
Aleksandr_Butenko_Mobile_DevelopmentAleksandr_Butenko_Mobile_Development
Aleksandr_Butenko_Mobile_Development
 
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
JetBrains Day Seoul - Exploring .NET’s memory management – a trip down memory...
 
Looming Marvelous - Virtual Threads in Java Javaland.pdf
Looming Marvelous - Virtual Threads in Java Javaland.pdfLooming Marvelous - Virtual Threads in Java Javaland.pdf
Looming Marvelous - Virtual Threads in Java Javaland.pdf
 
multithreading
multithreadingmultithreading
multithreading
 
Quantifying the Performance of Garbage Collection vs. Explicit Memory Management
Quantifying the Performance of Garbage Collection vs. Explicit Memory ManagementQuantifying the Performance of Garbage Collection vs. Explicit Memory Management
Quantifying the Performance of Garbage Collection vs. Explicit Memory Management
 
Java Multithreading
Java MultithreadingJava Multithreading
Java Multithreading
 
Java multithreading
Java multithreadingJava multithreading
Java multithreading
 
Java
JavaJava
Java
 
Java
JavaJava
Java
 
Using the big guns: Advanced OS performance tools for troubleshooting databas...
Using the big guns: Advanced OS performance tools for troubleshooting databas...Using the big guns: Advanced OS performance tools for troubleshooting databas...
Using the big guns: Advanced OS performance tools for troubleshooting databas...
 
Multithreading
MultithreadingMultithreading
Multithreading
 
Slot02 concurrency1
Slot02 concurrency1Slot02 concurrency1
Slot02 concurrency1
 
Java Garbage Collection - How it works
Java Garbage Collection - How it worksJava Garbage Collection - How it works
Java Garbage Collection - How it works
 

Recently uploaded

AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdfAWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
karim wahed
 
Overview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptxOverview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptx
Mitchell Marsh
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Sparity1
 
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptxWired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
SimonedeGijt
 
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
Hironori Washizaki
 
WEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service ProvidersWEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service Providers
Severalnines
 
Migrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS CloudMigrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS Cloud
Ortus Solutions, Corp
 
NYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdfNYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdf
AUGNYC
 
active-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptxactive-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptx
sudsdeep
 
Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …
908dutch
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
Roshan Dwivedi
 
dachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdfdachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdf
DNUG e.V.
 
Attendance Tracking From Paper To Digital
Attendance Tracking From Paper To DigitalAttendance Tracking From Paper To Digital
Attendance Tracking From Paper To Digital
Task Tracker
 
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdfIndependence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Livetecs LLC
 
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
Semiosis Software Private Limited
 
Folding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a seriesFolding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a series
Philip Schwarz
 
A Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdfA Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdf
kalichargn70th171
 
CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
bhatinidhi2001
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
karim wahed
 
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
avufu
 

Recently uploaded (20)

AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdfAWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) AWS Security .pdf
 
Overview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptxOverview of ERP - Mechlin Technologies.pptx
Overview of ERP - Mechlin Technologies.pptx
 
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
 
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptxWired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
 
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
COMPSAC 2024 D&I Panel: Charting a Course for Equity: Strategies for Overcomi...
 
WEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service ProvidersWEBINAR SLIDES: CCX for Cloud Service Providers
WEBINAR SLIDES: CCX for Cloud Service Providers
 
Migrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS CloudMigrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS Cloud
 
NYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdfNYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdf
 
active-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptxactive-directory-auditing-solution (2).pptx
active-directory-auditing-solution (2).pptx
 
Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
 
dachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdfdachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdf
 
Attendance Tracking From Paper To Digital
Attendance Tracking From Paper To DigitalAttendance Tracking From Paper To Digital
Attendance Tracking From Paper To Digital
 
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdfIndependence Day Hasn’t Always Been a U.S. Holiday.pdf
Independence Day Hasn’t Always Been a U.S. Holiday.pdf
 
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
React vs Next js: Which is Better for Web Development? - Semiosis Software Pr...
 
Folding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a seriesFolding Cheat Sheet #7 - seventh in a series
Folding Cheat Sheet #7 - seventh in a series
 
A Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdfA Comparative Analysis of Functional and Non-Functional Testing.pdf
A Comparative Analysis of Functional and Non-Functional Testing.pdf
 
CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.CViewSurvey Digitech Pvt Ltd that  works on a proven C.A.A.G. model.
CViewSurvey Digitech Pvt Ltd that works on a proven C.A.A.G. model.
 
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
AWS Cloud Practitioner Essentials (Second Edition) (Arabic) Course Introducti...
 
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
一比一原版英国牛津大学毕业证(oxon毕业证书)如何办理
 

Profiler Guided Java Performance Tuning

  • 2.  Introduction  Basic Java Concepts ◦ Concurrency ◦ Memory Management  Java Profiler Tools ◦ NetBeans Profiler ◦ JProfiler ◦ Eclipse TPTP  Questions
  • 4.  Performance is one of the NFRs.  Usually you have SLA for each transaction.  2 types of performance issues : ◦ Performance Testing Results  In Dev or Test environment. ◦ Production Performance Issues  Difficult to handle.
  • 5.  Problem Definition (UC, Scenario, Conditions, User, ..etc…)  Gather Information  Try to replicate (if possible)  Get all tools ready to use.  Build your plan: ◦ Analyze Tools output. ◦ Code Inspection ◦ Potential fixes. (Google it …) ◦ Re-test.
  • 6.  Better if : ◦ Relay on tools output. ◦ Less dependant on personal experience. ◦ Concrete (not abstract) ◦ Always comparative. ◦ Quick POC ◦ Proven from Google   Better if not: ◦ Trial and error approach. ◦ Optimize as you go.
  • 7.  Hardware ◦ CPU ◦ Network ◦ Memory ◦ Storage  Software ◦ Operating System ◦ Libraries, Drivers and Utilities. ◦ Application
  • 8.  CPU : ◦ Detect root cause (anti-virus!) ◦ Change algorithm ◦ Increase CPU power.  Network : ◦ Detect root cause (OS updates!) ◦ Change architecture.  Memory : ◦ Root cause (memory leakage) ◦ add more memory, re-structure caching.  Storage : ◦ Add storage, free more space (archive) , etc.
  • 9.  Good but sometimes you can consider: ◦ CPU :  Use MT.  Change workflow. ◦ Memory :  Utilize more memory in caching.  Change architecture.
  • 10.  Google it.  Continuous follow-up is essential , as new tips always come: ◦ Use StringBuffer rather than the string concatenation operator (+). ◦ Use primitive data types instead of objects. ◦ Use short-circuit boolean operators whenever possible. ◦ Flatten objects as much as possible. ◦ Use the clone() method to avoid calling any constructors. ◦ Don’t use exception to return flag.
  • 11.  Vector, Stack, Hashtable are deprecated  For single threaded use : ◦ ArrayList ◦ Deque ◦ HashMap  For MT use : (a lot of other alternatives) ◦ CopyOnWriteArrayList ◦ ConcurrentLinkedDeque ◦ ConcurrentHashMap
  • 14.  Has a self-contained execution environment.  A process generally has a complete, private set of basic run-time resources; in particular, each process has its own memory space.  Most operating systems support Inter Process Communication (IPC) resources, such as pipes and sockets  Most implementations of the Java virtual machine run as a single process.  A Java application can create additional processes using a ProcessBuilder object.
  • 15.  As simple as : Process pb = new ProcessBuilder("myCommand", "myArg").start();  But can be more complex by defining the Input, Output , Error streams or inherit them using: pb.inheritIO() public Process start() throws IOException
  • 16.  Both processes and threads provide an execution environment, but creating a new thread requires fewer resources than creating a new process.  Threads exist within a process — every process has at least one.  Threads share the process's resources, including memory and open files.  This makes for efficient, but potentially problematic, communication.
  • 17.  Every application has at least one thread — or several, if you count "system" threads ( like memory management ).  But from the application programmer's point of view, you start with just one thread, called the main thread.  This thread has the ability to create additional threads.
  • 18.  Using the Interface or extending the Class : public class HelloRunnable implements Runnable { public void run() { System.out.println("Hello!"); } public static void main(String args[]) { (new Thread(new HelloRunnable())).start(); } }
  • 19.  Each object in Java is associated with a monitor, which a thread can lock or unlock.  Only one thread at a time may hold a lock on a monitor.  A synchronized statement : ◦ It then attempts to perform a lock action on that object's monitor and does not proceed further until the lock action has successfully.
  • 20.  A synchronized method automatically performs a lock action when it is invoked; ◦ Its body is not executed until the lock action has successfully completed. ◦ If the method is an instance method :  It locks the monitor associated with the instance for which it was invoked (this). ◦ If the method is static :  It locks the monitor associated with the Class object that represents the class in which the method is defined.
  • 22.  Use Generational Collection ◦ Memory is divided into generations, that is, separate pools holding objects of different ages.
  • 23.  A garbage collector is responsible for ◦ Allocating memory ◦ Ensuring that any referenced objects remain in memory ◦ Recovering memory used by objects that are no longer reachable from references in executing code.
  • 24.  Serial versus Parallel ◦ When parallel collection is used, the task of garbage collection is split into parts and those subparts are executed simultaneously, on different CPUs.  Concurrent versus Stop-the-world ◦ Concurrent need extra care, as it is operating over objects that might be updated at the same time by the application. ◦ Adds some overhead and requires a larger heap size. ◦ Stop-the-world garbage collection is simpler since the heap is frozen and objects are not changing during the collection. ◦ It may be undesirable for some applications to be paused.
  • 25.  Compacting versus Non-compacting ◦ Make it easy and fast to allocate a new object at the first free location (One pointer is enough) ◦ Non-compacting collector releases the space utilized by garbage objects in-place. ◦ Faster completion of garbage collection, but the drawback is potential fragmentation. (Need array of pointers) ◦ In general, it is more expensive to allocate from a heap with in-place deallocation than from a compacted heap.
  • 26.  Most objects are initially allocated in Eden. ◦ A few large objects may be allocated directly in the old generation  The survivor spaces hold objects that have survived at least one young generation collection ◦ i.e. given additional chances to die before being considered “old enough” to be promoted to the old generation.
  • 27.  Both young and old collections are done serially (using a single CPU), in a stop-the world fashion.  Application execution is halted while collection is taking place
  • 30.  The collector then performs sliding compaction, sliding the live objects towards the beginning of the old generation space, leaving any free space in a single contiguous chunk at the opposite end.  (mark-sweep-compact collection algorithm)
  • 34. -Xms<min> //initial heap size -Xmx<max> //max heap size -XX:PermSize= //initial perm size -XX:MaxPermSize= //max perm size -XX:MinHeapFreeRatio=<minimum> -XX:MaxHeapFreeRatio=<maximum> -XX:SurvivorRatio=6 -XX:+UseSerialGC -XX:+UseParallelGC -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=<N> -XX:+HeapDumpOnOutOfMemoryError
  • 35.  -verbose:gc  [GC 325816K->83372K(776768K), 0.2454258 secs] [Full GC 267628K->83769K(776768K), 1.8479984 secs]  [GC (1)->(2)(3), (4) secs]  (1->2) Combined size of live objects before and after garbage collection.  (3) Amount of space usable for java objects without requesting more memory from the operating system.  (4) time taken to perform GC.  -XX:+PrintGCDetails : print more details  -XX:+PrintGCTimeStamps : print timestamp
  • 36.  Variant : ◦ Java heap space / Requested array size exceeds VM limit = heap size issue ◦ PermGen space = no memory for creating new class. ◦ unable to create new native thread / <reason> <stacktrace> (Native method) = no memory available for allocation of Thread (native stacktrace) ◦ request <size> bytes for <reason>. Out of swap space? = no memory left in OS.  Doesn’t mean no memory left : ◦ If >98% of the total time is spent in GC and only less than 2% of the heap is recovered. ◦ Adding element to Array require new Array creation, and no enough space in any generation.
  • 38.  NetBeans Profiler  Eclipse : TPTP, MAT, Profiling, JVMMonitor, etc..  Java : Jconsole, jstat  JProfiler  AppDynamics  JBossProfiler  JProbe  JRAT, JMAP, etc…
  • 39.  Location: Local or Remote.  GUI: Online or Offline.  Time: Attach or started for profiling.  CPU: Sampled or Instrumented  Classes: Filtered or not filtered.  Type : Web Server or Standalone.  etc..
  • 40.  We will try 3 profilers: ◦ NetBeans Profiler ◦ JProfiler ◦ Eclipse TPTP
  • 46.  Heap is growing …
  • 49.  Easy actually it is the Same way 
  • 52.  Attach to the running server …
  • 54.  Add triggers to define what to record and to save the snapshots..
  • 55.  The session is added to configuration file with “id” example : ◦ <session id="119" ◦ …. ◦ </session>  Now in run command add the following:  - agentpath:D:PROGRA~1JPROFI~1binwind owsjprofilerti.dll=offline,id=119;
  • 60.  For More information refer to Java EE 7 performance tuning and optimization book.  The book is published by Packt Publishing. ◦ http://www.packtpub.com/java-ee-7- performance-tuning-and-optimization/book ◦ http://www.amazon.com/dp/178217642X/?tag=pa cktpubli-20 ◦ http://www.amazon.co.uk/dp/178217642X/?tag=p acktpubli-21
  • 61.  http://www.oracle.com/technetwork/java/javase /memorymanagement-whitepaper-150215.pdf  http://docs.oracle.com/javase/specs/jvms/se7/h tml/jvms-2.html  http://www.oracle.com/technetwork/java/javase /gc-tuning-6-140523.html  http://docs.oracle.com/javase/tutorial/essential/ concurrency/procthread.html  http://java-source.net/open-source/profilers  www.ej-technologies.com/  http://profiler.netbeans.org/  http://www.eclipse.org/tptp/  http://www.petefreitag.com/articles/gctuning/
  • 62.  Introduction  Basic Java Concepts ◦ Concurrency ◦ Memory Management  Java Profiler Tools ◦ NetBeans Profiler ◦ JProfiler ◦ Eclipse TPTP