SlideShare uma empresa Scribd logo
1 de 74
1
Simple Tweaks
To Get the Most Out Of Your JVM
Jamie Lee Coleman
Software Developer/Advocate @ IBM
Twitter: @JamieLeeC
2
What we will be looking at…
• What is a JVM and why is it
important?
• How the cloud has changed
the JVM
• HotSpot, OpenJ9 &
GraalVM Overview
• Picking the right runtime to run
on your JVM
• Tweaking your JVM
• OpenJ9 Class Cache + Demo
• OpenJ9 Idle Tuning
• OpenJ9 JIT Server
• CRIU
• Recap
3
3
Why is the JVM important?
Well firstly without it we would have no Java!
4
What does the JVM do
A Java Virtual Machine (JVM) is responsible for taking your application
bite code and converting it to a machines language for execution.
Most other languages compile code for a specific system but in Java,
the compiler converts the code for a Java Virtual Machine that can be
used on any system hence the phrase “Write once, run anywhere”.
5
Why do people use JVM’s?
• Cross Platform
• Large Library Ecosystem
• Great Garbage collector
• Powerful Monitoring tools
• Proven and Robust!
7
JVM Architecture
Class Loader Subsystem
Runtime Data Area
Method
Area
Heap
JVM
Language
Stack
PC
Registers
Native
Method
Stacks
Execution
Engine
Native
Method
Interface
Native
Method
Library's
8
ClassLoader Subsystem
Loading
• Loads classes using 3 different class loaders named the Bootstrap, Extension
and Application ClassLoaders
Linking
• Verify the generated bite code, prepare all static variables and assign default
values and resolves all symbolic memory references
Initialization
• Assigns static variables with their original values and executes the static block
9
Runtime Data Area
Method Area:
• Stores metadata, constant runtime pool and code for methods.
Heap:
• Common memory shared between multiple threads that stores Object, Instance Variables and Arrays.
JVM Language Stacks:
• Created when a thread is created and stores local variables
PC Registers:
• Every thread has its own Register, and it stores the address of the Java virtual machine instruction which
is currently executing.
Native Method Stack:
• Holds Native method information. For every thread that is created so is a native method stack.
10
Execution Engine
Execution Engine:
• Reads bytecode and executes it using the Interpreter and JIT Compiler
Native method interface (JNI):
• Interacts with the Native Method Libraries to provide the required libraries
for the execution engine.
Native Method Library’s
• A collection of Native Libraries.
11
11
How the cloud has changed
the JVM
$ $ $ $ $
12
Cloud computing
energy = money
Money changes everything
With a measurable and direct relationship between
$£€¥₽ and CPU/RAM, disk etc the financial success
or failure of a project is even easier to see
And that means…
Even more focus on value for money and as a
result focus on energy.
13
Demand
One big server running all the time?
time
What the Cloud offers
14
Demand
One big server running all the time?
time
What the Cloud offers
15
Demand
time
One big server running all the time?
What the Cloud offers
16
Microservices and the JVM
17
Many metrics must be balanced for Java Performance
• Wide variety of use cases means many metrics must be balanced
• Different goals  different design decisions
• No single “right” answer
• Must keep a balance  make sensible trade-offs
• Key performance metrics tracked
• start-up time
• ramp-up time
• memory footprint
• response time
• CPU/Throughput
Optimizing for cloud requires a different balance across these performance metrics
start-up time
footprint
ramp-up
response time
CPU
18
Java ME Inside!
19
JAVA ME REQUIREMENTS
Small footprint
- On disk and runtime.
- Very limited RAM, usually more ROM
Fast startup
- Everybody wants their games to start
quickly
Quick / immediate rampup
- Game shouldn’t play better the longer
you play
Java ME
20
JAVA ME REQUIREMENTS JVM IN THE CLOUD REQUIREMENTS
Small footprint
- On disk and runtime.
- Very limited RAM, usually more ROM
Small footprint
- Improves density for providers
- Improves cost for applications
Fast startup
- Everybody wants their games to start
quickly
Fast startup
- Faster scaling for increased demand
Quick / immediate rampup
- Game shouldn’t play better the longer
you play
Quick / immediate rampup
- GB/hr is key, if you run for less time you pay
less money
Java ME vs the JVM in the Cloud
21
21
Why should developers care
about optimisation of our
Applications?
It does not save that much money!
22
Why should developers care?
There is over 500,000 data centres worldwide
The area of land they consume is around the same as 6,000 football
pitches
UK energy consumption x 1.5 == global data centre energy
consumption (2019).
23
Luckily Hardware efficiency is helping
24
24
The Different JVMs Available
25
There is a JVM for everything
Azul
Codename One (Mobile)
Eclipse OpenJ9
GraalVM
HotSpot
JamVM (IOT Devices)
JikesRVM (Research)
leJOS (Robotics for Lego)
Maxine
Apache Harmony
JOP
Juice
Jupiter
Kaffe
Mika VM (Embedded Devices)
NanoVN (Asuro Robot)
SableVM
SquawkVM
SuperWaba
TakaTuka
TinVM
WonkaVM
26
Most popular JVM’s
• Oracle JDK
• OpenJDK (via Adopt OpenJDK)
• OpenJDK (via Oracle)
• OpenJDK (via Amazon Coretto)
• Azul
• GraalVM
• Eclipse OpenJ9 (via Adopt OpenJDK)
31
31
HotSpot, OpenJ9 and GraalVM
Overview
32
Overview of HotSpot
Formally known as “Java HotSpot Performance Engine”
Original release: 27th April 1999
HotSpot became the default Sun (Now Oracal) JVM in Java 1.3
On 13 November 2006, the HotSpot JVM and the Java Development Kit (JDK)
became Open Source paving the way for OpenJDK and many other JVM
implementations.
“HotSpot continually analyzes the program's performance for hot spots which are
executed often or repeatedly. These are then targeted for optimizing, leading to
high-performance execution with a minimum of overhead for less performance-
critical code” - Wikipedia
33
Overview of OpenJ9
Designed from the start to span all the
operating systems needed by IBM products
This JVM can go from small to large
Can handle constrained environments or
memory rich ones
Is used by the largest enterprises on the
planet
34
Overview of OpenJ9
35
Overview of GraalVM
Original Release: May 2019 v19.0
Based on HotSpot OpenJDK with routes from the Maxine Virtual machine
developed by Sun (Oracal) and the University of Manchester UK.
Why is it different to other JVM’s?
• It has a new JIT compiler for Java, GraalVM Compiler
• It allows the ahead-of-time compilation of Java applications with the GraalVM Native Image
• Truffle Language Implementation framework and the GraalVM SDK to enable additional
programming language runtimes
• LLVM and JavaScript Runtime
36
GraalVM Project Goals:
• To improve the performance of Java virtual machine-based languages to
match the performance of native languages.
• To reduce the startup time of JVM-based applications by compiling them
ahead-of-time with GraalVM Native Image technology.
• To enable GraalVM integration into the Oracle Database, OpenJDK,
Node.js, Android/iOS, and to support similar custom embeddings.
• To allow freeform mixing of code from any programming language in a
single program, billed as "polyglot applications".
• To include an easily extended set of "polyglot programming tools".
37
37
Picking the right Runtime
Open Source Runtimes from IBM & RedHat
38
38
39
Liberty
• Developer friendly
• Just enough application server
• Fast inner loop with dev mode
• Support for industry standard
dev tools
• Jakarta EE, Java EE,
MicroProfile, Spring APIs
• Zero Migration
• Cloud Ready
• Container optimized
• Designed for dev/ops
• Small disk footprint
• Efficient memory usage
• Fast startup
• High throughput
• Self-Tuned Thread Pool
40
<feature>servlet-4.0</feature>
<feature>jsf-2.3</feature>
Just Enough Application Server
• You control which features are loaded into each server instance
Kernel
servlet-4.0
http-2.0 appmgr
jsp-2.3 jsf-2.3
Java EE/Jakarta EE
41
API Support
• First shipped in WAS 8.5 in 2012
o Servlet + JSP + JPA
• Web Profile 6 in 2014
• Java EE 7 in 2016 – first commercial
product to certify
• Java EE 8 in 2018 – first to certify
• Jakarta EE 8 in 2019 – first to certify
• Eclipse MicroProfile – first to deliver
1.0-1.4, 2.0-2.1, 3.0
42
43
Quarkus
• Unified Configuration
• Zero config, live reload
• Streamlined code for the 80% common usages
• Native Execution
• Support for many libraries such as MicroProfile
44
Quarkus
45
Other Runtimes
46
46
Tweaking the JVM
Making Your Java Code Perform
47
Making the most out of any JVM
1. Writing efficient code
2. Use the right JVM for your needs
3. Pick a runtime that is right for your application
4. Use Profiling to get the most out of your JVM
5. Tweak your JVM depending on your needs in development and
production
48
1. Writing efficient code
• Use primitives where possible
• Use a StingBuilder rather than an StringBuffer
• Avoid using an Iterator
• Avoid using BigInteger and BigDecimal
49
2. Use the right JVM for your needs
50
3. Pick a runtime that is right for your
application
Architectural style
Functions
Monolith Microservice
API
needs
Smaller
Larger
Macroservice
Open Liberty
WAS
Quarkus
51
4. Profiling
Java Profilers are really useful tools that enable you to monitor Java
bytecode constructs and operations inside the JVM. This includes
things such as:
• Garbage Collections
• Object Creation
• Method Executions
• Iterative Executions
• Thread Executions
52
4. Profiling Cont
Most Popular Java Profilers:
• JProfiler
• YourKit
• Java VisualVM
• NetBeans Profiler
• Oracle Java Mission Control (Included in Oracle JDK)
53
5. Tweak your JVM
• Tune your Garbage Collector (GC)
• Use the AOT Compiler
• Enable Class Data Sharing (HotSpot & OpenJ9)
• Enable Idle Tuning
• Use a JIT Server
• Start with min Heap Size
54
54
OpenJ9 Class Data Sharing
For Super Fast Start-up
55
• A shared classes cache is an area of shared memory of a fixed size that
persists beyond the lifetime of the JVM or a system reboot unless a non-
persistent shared cache is used. Any number of shared caches can exist on
a system, and all are subject to operating system settings and restrictions.
• A shared cache cannot grow in size. When it becomes full, JVMs can still
load classes from it but can no longer store any data into it. You can create a
large, shared classes cache up front, while setting a soft maximum limit on
how much shared cache space can be used. You can increase this limit
when you want to store more data into the shared cache without shutting
down the JVMs that are connected to it.
What is class sharing?
56
When a JVM loads a class, it first looks in the class loader cache to see if the class it needs is already present. If
yes, it returns the class from the class loader cache. Otherwise, it loads the class from the filesystem and writes
it into the cache as part of the defineClass() call. Therefore, a non-shared JVM has the following class loader
lookup order:
• Classloader cache
• Parent
• Filesystem
In contrast, a JVM running with the class sharing feature uses the following order:
• Classloader cache
• Parent
• Shared classes cache
• Filesystem
How does class sharing work?
57
To enable class sharing, add -Xshareclasses[:name=<cachename>] to
an existing Java command line.
You can specify the shared cache size using the parameter -
Xscmx<size>[k|m|g. This parameter only applies if a new shared cache
is created.
How to Enabling class sharing
58
0
2
4
6
8
10
12
Open Liberty 20.0.0.4 TomEE 8.0.0-M3-microprofile Tomcat 9.0.22 + OpenWebBeans
2.0.11(CDI) + CXF 3.3.2 (jaxrs)
Wildfly 17.0.1 javaee JBoss 7.2 Glassfish web 5 Payara web 5.192
PingPerf application startup time with HotSpot
(in seconds)
Startup time comparison (using HotSpot JVM)
59
0
1
2
3
4
5
6
7
8
Open Liberty 20.0.0.4 TomEE 8.0.0-M3-microprofile Tomcat 9.0.22 + OpenWebBeans
2.0.11(CDI) + CXF 3.3.2 (jaxrs)
Wildfly 17.0.1 javaee JBoss 7.2 Glassfish web 5 Payara web 5.192
PingPerf application startup time with OpenJ9 Shared Classes Cache (in seconds)
Startup time comparison (using OpenJ9 JVM)
60
Open Liberty and OpenJ9 shared classes
cache in Docker
0
2
4
6
8
Open Liberty Docker image without shared classes cache Open Liberty Docker image with shared classes cache
AcmeAir MS Startup time in Docker (in seconds)
61
0
0.5
1
1.5
2
2.5
December '18 March '19 April '19 July '19 August '19 September '19 April '20
2018-2020 Progression of OpenLiberty+OpenJ9 startup time (seconds)
Open Liberty with OpenJ9: the road to one
second startup time
OpenJ9 : Improved Cached feature metadata when no change to server.xml Changed bundle activation to start in parallel
Better AOT code RAS processing Optimized loading of CXF JSON/JSONB provider RAS annotation processing at build time
JMX MBeanServer init Cached annotation information for built-in JAX-RS Providers Cached plugin xml and OSGi metadata
OpenJ9 : GC hints in shared classes cache Reduced class loading during startup
Reduced logging overhead
OpenJ9 : More AOT code in shared classes cache
OpenJ9 : Optimize class verification overhead
62
62
OpenJ9 Class Cache
Demo
63
Interactive Demo
If you want to run through the demo’s at the same time please go to:
https://openliberty.io/guides/getting-started.html
64
64
OpenJ9 Idle Tuning
65
OpenJ9 JVM judiciously uses computing resources
Computing resources ==
Cloud it’s about sharing; do not be greedy in using all resources
• OpenJ9 is conservative with heap growth
• OpenJ9 frees memory used transiently during JIT compilation
0
100
200
300
400
500
600
700
800
1GB 2GB 4GB
Resident
set
size
(MB)
Container limit
Steady state memory footprint in AcmeAir
OpenJ9 Hotspot
For large containers
OpenJ9 uses less than
half the memory
66
Free Resources when Applications are
Idling
-XX:+IdleTuningGcOnIdle
(default setting in container)
Benchmark: https://github.com/blueperf/acmeair
More details: https://developer.ibm.com/javasdk/2017/09/25/still-paying-unused-memory-java-app-idle
anthesisgroup.com: “Some 30 percent of VMs are zombies”
https://anthesisgroup.com/wp-content/uploads/2017/03/Comatsoe-Servers-Redux-2017.pdf
1. Detect idle state
2. Trigger GC
3. Compact Java heap
4. Send OS reclamation hint
OpenJ9 frees resources when applications are idling
67
67
OpenJ9 JIT Server
68
JIT server
JIT
JVM
JITServer
JIT
JVM
JIT
JVM Orchestrator
load balancing, affinity,
scaling, reliability
JITServer
69
JITServer Performance
Throughput benefits grow in constrained environments
0
200
400
600
800
1000
1200
1400
0 100 200 300 400 500 600
Throughput
(pages/sec)
Time (sec)
--cpus=1, -m=300m
JITServer OpenJ9
0
200
400
600
800
1000
1200
1400
0 100 200 300 400 500 600
Throughput
(pages/sec)
Time (sec)
--cpus=1, -m=256m
JITServer OpenJ9
0
200
400
600
800
1000
1200
1400
0 100 200 300 400 500 600
Throughput
(pages/sec)
Time (sec)
--cpus=1, -m=200m
JITServer OpenJ9
Smaller memory limit
JIT server performance : Open Liberty Daytrader7 throughput
70
How to enable a JIT Server
Launch OpenJ9 in client mode so that the VM sends requests to the
JITServer using the following command:
“-XX:+IseJITServer”
Then run the following command to start a JITServer process that
listens for incoming compilation requests:
“jitserver”
71
71
Future tech to the rescue?
Faster start-up for Java applications with CRIU snapshots
72
CRIU
Checkpoint/Restore in Userspace (CRIU) is a potential solution for
reducing start-up time in Java applications.
CRIU is a feature on the Linux operating system that enables a
snapshot (checkpoint) to be taken of a running application
The application instance can then be restarted from the point at which
the snapshot was taken.
73
CRIU
5-10 times improvement in start-up time, with the greater
benefits of CRIU coming from more complex, slower to
start, applications.
74
Challenges with CRIU
• Lack of encryption on CRIU snapshots
• No Address Space Layout Randomization (ASLR)
• Predictable random number generators
• Running as non-root user
• No API to specify when the snapshot should be taken
77
77
Recap
What if anything have you learned today?
78
How do you get the most out of
your JVM?
Write efficient code
Use the right JVM for your needs
Pick a runtime that is right for your application
Use Profiling
&
Tweaking your JVM
=
Less Money & Energy!
79
Links and Materials
JVM’s
• AdoptOpenJDK: https://adoptopenjdk.net/
• OpenJ9: https://www.eclipse.org/openj9/
• HotSpot JDK: https://openjdk.java.net/groups/hotspot/
• Oracle JDK: https://www.oracle.com/uk/java/technologies/javase-
downloads.html
• GraalVM: https://www.graalvm.org/
• Azul (Zulu): https://www.azul.com/downloads/zulu-community/
• Amazon JDK: https://aws.amazon.com/corretto/
Runtimes
• Open Liberty Site: https://openliberty.io/
• Open Liberty Guides: https://openliberty.io/guides
• Quarkus Site: https://quarkus.io/
Other Useful Links
• Jakarta EE Homepage: https://jakarta.ee/
• OpenJ9 JIT Server Doc:
https://www.eclipse.org/openj9/docs/jitserver/
• OpenJ9 Class Data Sharing Doc:
https://www.eclipse.org/openj9/docs/shrc/
• OpenJ9 Idle Tuning Doc:
https://www.eclipse.org/openj9/docs/xxidletuninggconidle/
80
References to research for this talk
• https://snyk.io/blog/36-of-developers-switched-from-oracle-jdk-to-an-alternate-openjdk-
distribution-over-the-last-year/
• https://en.wikipedia.org/wiki/List_of_Java_virtual_machines
• https://www.guru99.com/java-virtual-machine-
jvm.html#:~:text=Java%20Virtual%20Machine%20(JVM)%20is,code%20for%20a%20pa
rticular%20system.
• https://dzone.com/articles/jvm-architecture-explained
• https://www.quora.com/Whats-the-attraction-of-the-JVM-platform
• https://stackify.com/java-performance-tuning/
• https://en.wikipedia.org/wiki/Comparison_of_Java_virtual_machines
• https://www.baeldung.com/java-profilers
81
81
Thank You
Jamie Lee Coleman
Software Developer/Advocate @ IBM
jlcoleman@uk.ibm.com
@Jamie_Lee_C

Mais conteúdo relacionado

Mais procurados

Ultimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on KubernetesUltimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on Kuberneteskloia
 
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...Docker, Inc.
 
Why kubernetes for Serverless (FaaS)
Why kubernetes for Serverless (FaaS)Why kubernetes for Serverless (FaaS)
Why kubernetes for Serverless (FaaS)Krishna-Kumar
 
introduction to micro services
introduction to micro servicesintroduction to micro services
introduction to micro servicesSpyros Lambrinidis
 
A Million ways of Deploying a Kubernetes Cluster
A Million ways of Deploying a Kubernetes ClusterA Million ways of Deploying a Kubernetes Cluster
A Million ways of Deploying a Kubernetes ClusterJimmy Lu
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to KubernetesPaul Czarkowski
 
Devops - Microservice and Kubernetes
Devops - Microservice and KubernetesDevops - Microservice and Kubernetes
Devops - Microservice and KubernetesNodeXperts
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioAraf Karsh Hamid
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSAOracle Korea
 
How to build an event-driven, polyglot serverless microservices framework on ...
How to build an event-driven, polyglot serverless microservices framework on ...How to build an event-driven, polyglot serverless microservices framework on ...
How to build an event-driven, polyglot serverless microservices framework on ...Animesh Singh
 
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation SlidesKubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation SlidesSlideTeam
 
DCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and ArchitectureDCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and ArchitectureDocker, Inc.
 
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17Mario-Leander Reimer
 
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...Oleg Shalygin
 
Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018CodeOps Technologies LLP
 
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...Docker, Inc.
 
Intro to kubernetes
Intro to kubernetesIntro to kubernetes
Intro to kubernetesElad Hirsch
 
Kubernetes Networking 101
Kubernetes Networking 101Kubernetes Networking 101
Kubernetes Networking 101Kublr
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2Docker, Inc.
 

Mais procurados (20)

Ultimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on KubernetesUltimate Guide to Microservice Architecture on Kubernetes
Ultimate Guide to Microservice Architecture on Kubernetes
 
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
DCEU 18: From Legacy Mainframe to the Cloud: The Finnish Railways Evolution w...
 
Why kubernetes for Serverless (FaaS)
Why kubernetes for Serverless (FaaS)Why kubernetes for Serverless (FaaS)
Why kubernetes for Serverless (FaaS)
 
introduction to micro services
introduction to micro servicesintroduction to micro services
introduction to micro services
 
A Million ways of Deploying a Kubernetes Cluster
A Million ways of Deploying a Kubernetes ClusterA Million ways of Deploying a Kubernetes Cluster
A Million ways of Deploying a Kubernetes Cluster
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
Devops - Microservice and Kubernetes
Devops - Microservice and KubernetesDevops - Microservice and Kubernetes
Devops - Microservice and Kubernetes
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes Istio
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
How to build an event-driven, polyglot serverless microservices framework on ...
How to build an event-driven, polyglot serverless microservices framework on ...How to build an event-driven, polyglot serverless microservices framework on ...
How to build an event-driven, polyglot serverless microservices framework on ...
 
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation SlidesKubernetes Concepts And Architecture Powerpoint Presentation Slides
Kubernetes Concepts And Architecture Powerpoint Presentation Slides
 
DCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and ArchitectureDCEU 18: Docker Enterprise Platform and Architecture
DCEU 18: Docker Enterprise Platform and Architecture
 
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
A Hitchhiker’s Guide to the Cloud Native Stack. #CDS17
 
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
 
On Prem Container Cloud - Lessons Learned
On Prem Container Cloud - Lessons LearnedOn Prem Container Cloud - Lessons Learned
On Prem Container Cloud - Lessons Learned
 
Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018
 
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
 
Intro to kubernetes
Intro to kubernetesIntro to kubernetes
Intro to kubernetes
 
Kubernetes Networking 101
Kubernetes Networking 101Kubernetes Networking 101
Kubernetes Networking 101
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 

Semelhante a Simple tweaks to get the most out of your JVM

Cloud Native Compiler
Cloud Native CompilerCloud Native Compiler
Cloud Native CompilerSimon Ritter
 
Java-light-speed NebraskaCode.pdf
Java-light-speed NebraskaCode.pdfJava-light-speed NebraskaCode.pdf
Java-light-speed NebraskaCode.pdfRichHagarty
 
javalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdfjavalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdfRichHagarty
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
JITServerTalk JCON World 2023.pdf
JITServerTalk JCON World 2023.pdfJITServerTalk JCON World 2023.pdf
JITServerTalk JCON World 2023.pdfRichHagarty
 
FOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VMFOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VMCharlie Gracie
 
Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019graemerocher
 
SemeruRuntimesUnderTheCover .pptx
SemeruRuntimesUnderTheCover .pptxSemeruRuntimesUnderTheCover .pptx
SemeruRuntimesUnderTheCover .pptxSumanMitra22
 
Java performance tuning
Java performance tuningJava performance tuning
Java performance tuningJerry Kurian
 
DevNexus 2024: Just-In-Time Compilation as a Service for cloud-native Java mi...
DevNexus 2024: Just-In-Time Compilation as a Service for cloud-native Java mi...DevNexus 2024: Just-In-Time Compilation as a Service for cloud-native Java mi...
DevNexus 2024: Just-In-Time Compilation as a Service for cloud-native Java mi...RichHagarty
 
Performance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMsPerformance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMsMaarten Smeets
 
Secrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesSecrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesBruno Borges
 
(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?Steve Poole
 
Performance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMsPerformance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMsMaarten Smeets
 
JavaLand_To InstantOn and Beyond.pptx
JavaLand_To InstantOn and Beyond.pptxJavaLand_To InstantOn and Beyond.pptx
JavaLand_To InstantOn and Beyond.pptxGrace Jansen
 
Micronaut Deep Dive - Codeone 2019
Micronaut Deep Dive - Codeone 2019Micronaut Deep Dive - Codeone 2019
Micronaut Deep Dive - Codeone 2019graemerocher
 
No Compromise - Better, Stronger, Faster Java in the Cloud
No Compromise - Better, Stronger, Faster Java in the CloudNo Compromise - Better, Stronger, Faster Java in the Cloud
No Compromise - Better, Stronger, Faster Java in the CloudAll Things Open
 

Semelhante a Simple tweaks to get the most out of your JVM (20)

Cloud Native Compiler
Cloud Native CompilerCloud Native Compiler
Cloud Native Compiler
 
Java-light-speed NebraskaCode.pdf
Java-light-speed NebraskaCode.pdfJava-light-speed NebraskaCode.pdf
Java-light-speed NebraskaCode.pdf
 
javalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdfjavalightspeed-jakartatech-2023.pdf
javalightspeed-jakartatech-2023.pdf
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
JITServerTalk JCON World 2023.pdf
JITServerTalk JCON World 2023.pdfJITServerTalk JCON World 2023.pdf
JITServerTalk JCON World 2023.pdf
 
FOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VMFOSDEM 2017 - Open J9 The Next Free Java VM
FOSDEM 2017 - Open J9 The Next Free Java VM
 
Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019Introduction to Micronaut - JBCNConf 2019
Introduction to Micronaut - JBCNConf 2019
 
Peru JUG Micronaut & GraalVM
Peru JUG Micronaut & GraalVMPeru JUG Micronaut & GraalVM
Peru JUG Micronaut & GraalVM
 
SemeruRuntimesUnderTheCover .pptx
SemeruRuntimesUnderTheCover .pptxSemeruRuntimesUnderTheCover .pptx
SemeruRuntimesUnderTheCover .pptx
 
Java performance tuning
Java performance tuningJava performance tuning
Java performance tuning
 
DevNexus 2024: Just-In-Time Compilation as a Service for cloud-native Java mi...
DevNexus 2024: Just-In-Time Compilation as a Service for cloud-native Java mi...DevNexus 2024: Just-In-Time Compilation as a Service for cloud-native Java mi...
DevNexus 2024: Just-In-Time Compilation as a Service for cloud-native Java mi...
 
intoduction to java
intoduction to javaintoduction to java
intoduction to java
 
Performance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMsPerformance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMs
 
1.Intro--Why Java.pptx
1.Intro--Why Java.pptx1.Intro--Why Java.pptx
1.Intro--Why Java.pptx
 
Secrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesSecrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on Kubernetes
 
(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?
 
Performance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMsPerformance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMs
 
JavaLand_To InstantOn and Beyond.pptx
JavaLand_To InstantOn and Beyond.pptxJavaLand_To InstantOn and Beyond.pptx
JavaLand_To InstantOn and Beyond.pptx
 
Micronaut Deep Dive - Codeone 2019
Micronaut Deep Dive - Codeone 2019Micronaut Deep Dive - Codeone 2019
Micronaut Deep Dive - Codeone 2019
 
No Compromise - Better, Stronger, Faster Java in the Cloud
No Compromise - Better, Stronger, Faster Java in the CloudNo Compromise - Better, Stronger, Faster Java in the Cloud
No Compromise - Better, Stronger, Faster Java in the Cloud
 

Mais de Jamie Coleman

Open Source Licence to Kill in Software Development
Open Source Licence to Kill in Software DevelopmentOpen Source Licence to Kill in Software Development
Open Source Licence to Kill in Software DevelopmentJamie Coleman
 
The Secret Life of Maven Central - LJC 2022.pptx
The Secret Life of Maven Central - LJC 2022.pptxThe Secret Life of Maven Central - LJC 2022.pptx
The Secret Life of Maven Central - LJC 2022.pptxJamie Coleman
 
Code to Cloud Workshop, Shifting Security to the Left
Code to Cloud Workshop, Shifting Security to the LeftCode to Cloud Workshop, Shifting Security to the Left
Code to Cloud Workshop, Shifting Security to the LeftJamie Coleman
 
The Death Star & The Ultimate Vulnerability.pptx
The Death Star & The Ultimate Vulnerability.pptxThe Death Star & The Ultimate Vulnerability.pptx
The Death Star & The Ultimate Vulnerability.pptxJamie Coleman
 
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptx
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptxWhy Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptx
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptxJamie Coleman
 
Code to Cloud Workshop.pptx
Code to Cloud Workshop.pptxCode to Cloud Workshop.pptx
Code to Cloud Workshop.pptxJamie Coleman
 
Magic of Automation and Everyday Chores.pptx
Magic of Automation and Everyday Chores.pptxMagic of Automation and Everyday Chores.pptx
Magic of Automation and Everyday Chores.pptxJamie Coleman
 
Code to Cloud Workshop
Code to Cloud WorkshopCode to Cloud Workshop
Code to Cloud WorkshopJamie Coleman
 
Using Static Analysis Tools to Become a Superhero Programmer.pptx
Using Static Analysis Tools to Become a Superhero Programmer.pptxUsing Static Analysis Tools to Become a Superhero Programmer.pptx
Using Static Analysis Tools to Become a Superhero Programmer.pptxJamie Coleman
 
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptxDeploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptxJamie Coleman
 
Microservices made easy JavaCro 2021
Microservices made easy JavaCro 2021Microservices made easy JavaCro 2021
Microservices made easy JavaCro 2021Jamie Coleman
 
Replicating production on your laptop using the magic of containers v2
Replicating production on your laptop using the magic of containers v2Replicating production on your laptop using the magic of containers v2
Replicating production on your laptop using the magic of containers v2Jamie Coleman
 
Open Source In The World Of Java
Open Source In The World Of JavaOpen Source In The World Of Java
Open Source In The World Of JavaJamie Coleman
 
Replicating production on your laptop using the magic of containers
Replicating production on your laptop using the magic of containersReplicating production on your laptop using the magic of containers
Replicating production on your laptop using the magic of containersJamie Coleman
 
Simple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmSimple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmJamie Coleman
 
Codecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshopCodecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshopJamie Coleman
 
Cloud native java workshop
Cloud native java workshopCloud native java workshop
Cloud native java workshopJamie Coleman
 
Seriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java MicroservicesSeriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java MicroservicesJamie Coleman
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bagJamie Coleman
 
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at JavanturaHands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at JavanturaJamie Coleman
 

Mais de Jamie Coleman (20)

Open Source Licence to Kill in Software Development
Open Source Licence to Kill in Software DevelopmentOpen Source Licence to Kill in Software Development
Open Source Licence to Kill in Software Development
 
The Secret Life of Maven Central - LJC 2022.pptx
The Secret Life of Maven Central - LJC 2022.pptxThe Secret Life of Maven Central - LJC 2022.pptx
The Secret Life of Maven Central - LJC 2022.pptx
 
Code to Cloud Workshop, Shifting Security to the Left
Code to Cloud Workshop, Shifting Security to the LeftCode to Cloud Workshop, Shifting Security to the Left
Code to Cloud Workshop, Shifting Security to the Left
 
The Death Star & The Ultimate Vulnerability.pptx
The Death Star & The Ultimate Vulnerability.pptxThe Death Star & The Ultimate Vulnerability.pptx
The Death Star & The Ultimate Vulnerability.pptx
 
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptx
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptxWhy Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptx
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptx
 
Code to Cloud Workshop.pptx
Code to Cloud Workshop.pptxCode to Cloud Workshop.pptx
Code to Cloud Workshop.pptx
 
Magic of Automation and Everyday Chores.pptx
Magic of Automation and Everyday Chores.pptxMagic of Automation and Everyday Chores.pptx
Magic of Automation and Everyday Chores.pptx
 
Code to Cloud Workshop
Code to Cloud WorkshopCode to Cloud Workshop
Code to Cloud Workshop
 
Using Static Analysis Tools to Become a Superhero Programmer.pptx
Using Static Analysis Tools to Become a Superhero Programmer.pptxUsing Static Analysis Tools to Become a Superhero Programmer.pptx
Using Static Analysis Tools to Become a Superhero Programmer.pptx
 
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptxDeploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
 
Microservices made easy JavaCro 2021
Microservices made easy JavaCro 2021Microservices made easy JavaCro 2021
Microservices made easy JavaCro 2021
 
Replicating production on your laptop using the magic of containers v2
Replicating production on your laptop using the magic of containers v2Replicating production on your laptop using the magic of containers v2
Replicating production on your laptop using the magic of containers v2
 
Open Source In The World Of Java
Open Source In The World Of JavaOpen Source In The World Of Java
Open Source In The World Of Java
 
Replicating production on your laptop using the magic of containers
Replicating production on your laptop using the magic of containersReplicating production on your laptop using the magic of containers
Replicating production on your laptop using the magic of containers
 
Simple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmSimple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvm
 
Codecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshopCodecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshop
 
Cloud native java workshop
Cloud native java workshopCloud native java workshop
Cloud native java workshop
 
Seriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java MicroservicesSeriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java Microservices
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bag
 
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at JavanturaHands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
 

Último

Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 

Último (20)

Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

Simple tweaks to get the most out of your JVM

  • 1. 1 Simple Tweaks To Get the Most Out Of Your JVM Jamie Lee Coleman Software Developer/Advocate @ IBM Twitter: @JamieLeeC
  • 2. 2 What we will be looking at… • What is a JVM and why is it important? • How the cloud has changed the JVM • HotSpot, OpenJ9 & GraalVM Overview • Picking the right runtime to run on your JVM • Tweaking your JVM • OpenJ9 Class Cache + Demo • OpenJ9 Idle Tuning • OpenJ9 JIT Server • CRIU • Recap
  • 3. 3 3 Why is the JVM important? Well firstly without it we would have no Java!
  • 4. 4 What does the JVM do A Java Virtual Machine (JVM) is responsible for taking your application bite code and converting it to a machines language for execution. Most other languages compile code for a specific system but in Java, the compiler converts the code for a Java Virtual Machine that can be used on any system hence the phrase “Write once, run anywhere”.
  • 5. 5 Why do people use JVM’s? • Cross Platform • Large Library Ecosystem • Great Garbage collector • Powerful Monitoring tools • Proven and Robust!
  • 6. 7 JVM Architecture Class Loader Subsystem Runtime Data Area Method Area Heap JVM Language Stack PC Registers Native Method Stacks Execution Engine Native Method Interface Native Method Library's
  • 7. 8 ClassLoader Subsystem Loading • Loads classes using 3 different class loaders named the Bootstrap, Extension and Application ClassLoaders Linking • Verify the generated bite code, prepare all static variables and assign default values and resolves all symbolic memory references Initialization • Assigns static variables with their original values and executes the static block
  • 8. 9 Runtime Data Area Method Area: • Stores metadata, constant runtime pool and code for methods. Heap: • Common memory shared between multiple threads that stores Object, Instance Variables and Arrays. JVM Language Stacks: • Created when a thread is created and stores local variables PC Registers: • Every thread has its own Register, and it stores the address of the Java virtual machine instruction which is currently executing. Native Method Stack: • Holds Native method information. For every thread that is created so is a native method stack.
  • 9. 10 Execution Engine Execution Engine: • Reads bytecode and executes it using the Interpreter and JIT Compiler Native method interface (JNI): • Interacts with the Native Method Libraries to provide the required libraries for the execution engine. Native Method Library’s • A collection of Native Libraries.
  • 10. 11 11 How the cloud has changed the JVM $ $ $ $ $
  • 11. 12 Cloud computing energy = money Money changes everything With a measurable and direct relationship between $£€¥₽ and CPU/RAM, disk etc the financial success or failure of a project is even easier to see And that means… Even more focus on value for money and as a result focus on energy.
  • 12. 13 Demand One big server running all the time? time What the Cloud offers
  • 13. 14 Demand One big server running all the time? time What the Cloud offers
  • 14. 15 Demand time One big server running all the time? What the Cloud offers
  • 16. 17 Many metrics must be balanced for Java Performance • Wide variety of use cases means many metrics must be balanced • Different goals  different design decisions • No single “right” answer • Must keep a balance  make sensible trade-offs • Key performance metrics tracked • start-up time • ramp-up time • memory footprint • response time • CPU/Throughput Optimizing for cloud requires a different balance across these performance metrics start-up time footprint ramp-up response time CPU
  • 18. 19 JAVA ME REQUIREMENTS Small footprint - On disk and runtime. - Very limited RAM, usually more ROM Fast startup - Everybody wants their games to start quickly Quick / immediate rampup - Game shouldn’t play better the longer you play Java ME
  • 19. 20 JAVA ME REQUIREMENTS JVM IN THE CLOUD REQUIREMENTS Small footprint - On disk and runtime. - Very limited RAM, usually more ROM Small footprint - Improves density for providers - Improves cost for applications Fast startup - Everybody wants their games to start quickly Fast startup - Faster scaling for increased demand Quick / immediate rampup - Game shouldn’t play better the longer you play Quick / immediate rampup - GB/hr is key, if you run for less time you pay less money Java ME vs the JVM in the Cloud
  • 20. 21 21 Why should developers care about optimisation of our Applications? It does not save that much money!
  • 21. 22 Why should developers care? There is over 500,000 data centres worldwide The area of land they consume is around the same as 6,000 football pitches UK energy consumption x 1.5 == global data centre energy consumption (2019).
  • 24. 25 There is a JVM for everything Azul Codename One (Mobile) Eclipse OpenJ9 GraalVM HotSpot JamVM (IOT Devices) JikesRVM (Research) leJOS (Robotics for Lego) Maxine Apache Harmony JOP Juice Jupiter Kaffe Mika VM (Embedded Devices) NanoVN (Asuro Robot) SableVM SquawkVM SuperWaba TakaTuka TinVM WonkaVM
  • 25. 26 Most popular JVM’s • Oracle JDK • OpenJDK (via Adopt OpenJDK) • OpenJDK (via Oracle) • OpenJDK (via Amazon Coretto) • Azul • GraalVM • Eclipse OpenJ9 (via Adopt OpenJDK)
  • 26. 31 31 HotSpot, OpenJ9 and GraalVM Overview
  • 27. 32 Overview of HotSpot Formally known as “Java HotSpot Performance Engine” Original release: 27th April 1999 HotSpot became the default Sun (Now Oracal) JVM in Java 1.3 On 13 November 2006, the HotSpot JVM and the Java Development Kit (JDK) became Open Source paving the way for OpenJDK and many other JVM implementations. “HotSpot continually analyzes the program's performance for hot spots which are executed often or repeatedly. These are then targeted for optimizing, leading to high-performance execution with a minimum of overhead for less performance- critical code” - Wikipedia
  • 28. 33 Overview of OpenJ9 Designed from the start to span all the operating systems needed by IBM products This JVM can go from small to large Can handle constrained environments or memory rich ones Is used by the largest enterprises on the planet
  • 30. 35 Overview of GraalVM Original Release: May 2019 v19.0 Based on HotSpot OpenJDK with routes from the Maxine Virtual machine developed by Sun (Oracal) and the University of Manchester UK. Why is it different to other JVM’s? • It has a new JIT compiler for Java, GraalVM Compiler • It allows the ahead-of-time compilation of Java applications with the GraalVM Native Image • Truffle Language Implementation framework and the GraalVM SDK to enable additional programming language runtimes • LLVM and JavaScript Runtime
  • 31. 36 GraalVM Project Goals: • To improve the performance of Java virtual machine-based languages to match the performance of native languages. • To reduce the startup time of JVM-based applications by compiling them ahead-of-time with GraalVM Native Image technology. • To enable GraalVM integration into the Oracle Database, OpenJDK, Node.js, Android/iOS, and to support similar custom embeddings. • To allow freeform mixing of code from any programming language in a single program, billed as "polyglot applications". • To include an easily extended set of "polyglot programming tools".
  • 32. 37 37 Picking the right Runtime Open Source Runtimes from IBM & RedHat
  • 33. 38 38
  • 34. 39 Liberty • Developer friendly • Just enough application server • Fast inner loop with dev mode • Support for industry standard dev tools • Jakarta EE, Java EE, MicroProfile, Spring APIs • Zero Migration • Cloud Ready • Container optimized • Designed for dev/ops • Small disk footprint • Efficient memory usage • Fast startup • High throughput • Self-Tuned Thread Pool
  • 35. 40 <feature>servlet-4.0</feature> <feature>jsf-2.3</feature> Just Enough Application Server • You control which features are loaded into each server instance Kernel servlet-4.0 http-2.0 appmgr jsp-2.3 jsf-2.3 Java EE/Jakarta EE
  • 36. 41 API Support • First shipped in WAS 8.5 in 2012 o Servlet + JSP + JPA • Web Profile 6 in 2014 • Java EE 7 in 2016 – first commercial product to certify • Java EE 8 in 2018 – first to certify • Jakarta EE 8 in 2019 – first to certify • Eclipse MicroProfile – first to deliver 1.0-1.4, 2.0-2.1, 3.0
  • 37. 42
  • 38. 43 Quarkus • Unified Configuration • Zero config, live reload • Streamlined code for the 80% common usages • Native Execution • Support for many libraries such as MicroProfile
  • 41. 46 46 Tweaking the JVM Making Your Java Code Perform
  • 42. 47 Making the most out of any JVM 1. Writing efficient code 2. Use the right JVM for your needs 3. Pick a runtime that is right for your application 4. Use Profiling to get the most out of your JVM 5. Tweak your JVM depending on your needs in development and production
  • 43. 48 1. Writing efficient code • Use primitives where possible • Use a StingBuilder rather than an StringBuffer • Avoid using an Iterator • Avoid using BigInteger and BigDecimal
  • 44. 49 2. Use the right JVM for your needs
  • 45. 50 3. Pick a runtime that is right for your application Architectural style Functions Monolith Microservice API needs Smaller Larger Macroservice Open Liberty WAS Quarkus
  • 46. 51 4. Profiling Java Profilers are really useful tools that enable you to monitor Java bytecode constructs and operations inside the JVM. This includes things such as: • Garbage Collections • Object Creation • Method Executions • Iterative Executions • Thread Executions
  • 47. 52 4. Profiling Cont Most Popular Java Profilers: • JProfiler • YourKit • Java VisualVM • NetBeans Profiler • Oracle Java Mission Control (Included in Oracle JDK)
  • 48. 53 5. Tweak your JVM • Tune your Garbage Collector (GC) • Use the AOT Compiler • Enable Class Data Sharing (HotSpot & OpenJ9) • Enable Idle Tuning • Use a JIT Server • Start with min Heap Size
  • 49. 54 54 OpenJ9 Class Data Sharing For Super Fast Start-up
  • 50. 55 • A shared classes cache is an area of shared memory of a fixed size that persists beyond the lifetime of the JVM or a system reboot unless a non- persistent shared cache is used. Any number of shared caches can exist on a system, and all are subject to operating system settings and restrictions. • A shared cache cannot grow in size. When it becomes full, JVMs can still load classes from it but can no longer store any data into it. You can create a large, shared classes cache up front, while setting a soft maximum limit on how much shared cache space can be used. You can increase this limit when you want to store more data into the shared cache without shutting down the JVMs that are connected to it. What is class sharing?
  • 51. 56 When a JVM loads a class, it first looks in the class loader cache to see if the class it needs is already present. If yes, it returns the class from the class loader cache. Otherwise, it loads the class from the filesystem and writes it into the cache as part of the defineClass() call. Therefore, a non-shared JVM has the following class loader lookup order: • Classloader cache • Parent • Filesystem In contrast, a JVM running with the class sharing feature uses the following order: • Classloader cache • Parent • Shared classes cache • Filesystem How does class sharing work?
  • 52. 57 To enable class sharing, add -Xshareclasses[:name=<cachename>] to an existing Java command line. You can specify the shared cache size using the parameter - Xscmx<size>[k|m|g. This parameter only applies if a new shared cache is created. How to Enabling class sharing
  • 53. 58 0 2 4 6 8 10 12 Open Liberty 20.0.0.4 TomEE 8.0.0-M3-microprofile Tomcat 9.0.22 + OpenWebBeans 2.0.11(CDI) + CXF 3.3.2 (jaxrs) Wildfly 17.0.1 javaee JBoss 7.2 Glassfish web 5 Payara web 5.192 PingPerf application startup time with HotSpot (in seconds) Startup time comparison (using HotSpot JVM)
  • 54. 59 0 1 2 3 4 5 6 7 8 Open Liberty 20.0.0.4 TomEE 8.0.0-M3-microprofile Tomcat 9.0.22 + OpenWebBeans 2.0.11(CDI) + CXF 3.3.2 (jaxrs) Wildfly 17.0.1 javaee JBoss 7.2 Glassfish web 5 Payara web 5.192 PingPerf application startup time with OpenJ9 Shared Classes Cache (in seconds) Startup time comparison (using OpenJ9 JVM)
  • 55. 60 Open Liberty and OpenJ9 shared classes cache in Docker 0 2 4 6 8 Open Liberty Docker image without shared classes cache Open Liberty Docker image with shared classes cache AcmeAir MS Startup time in Docker (in seconds)
  • 56. 61 0 0.5 1 1.5 2 2.5 December '18 March '19 April '19 July '19 August '19 September '19 April '20 2018-2020 Progression of OpenLiberty+OpenJ9 startup time (seconds) Open Liberty with OpenJ9: the road to one second startup time OpenJ9 : Improved Cached feature metadata when no change to server.xml Changed bundle activation to start in parallel Better AOT code RAS processing Optimized loading of CXF JSON/JSONB provider RAS annotation processing at build time JMX MBeanServer init Cached annotation information for built-in JAX-RS Providers Cached plugin xml and OSGi metadata OpenJ9 : GC hints in shared classes cache Reduced class loading during startup Reduced logging overhead OpenJ9 : More AOT code in shared classes cache OpenJ9 : Optimize class verification overhead
  • 58. 63 Interactive Demo If you want to run through the demo’s at the same time please go to: https://openliberty.io/guides/getting-started.html
  • 60. 65 OpenJ9 JVM judiciously uses computing resources Computing resources == Cloud it’s about sharing; do not be greedy in using all resources • OpenJ9 is conservative with heap growth • OpenJ9 frees memory used transiently during JIT compilation 0 100 200 300 400 500 600 700 800 1GB 2GB 4GB Resident set size (MB) Container limit Steady state memory footprint in AcmeAir OpenJ9 Hotspot For large containers OpenJ9 uses less than half the memory
  • 61. 66 Free Resources when Applications are Idling -XX:+IdleTuningGcOnIdle (default setting in container) Benchmark: https://github.com/blueperf/acmeair More details: https://developer.ibm.com/javasdk/2017/09/25/still-paying-unused-memory-java-app-idle anthesisgroup.com: “Some 30 percent of VMs are zombies” https://anthesisgroup.com/wp-content/uploads/2017/03/Comatsoe-Servers-Redux-2017.pdf 1. Detect idle state 2. Trigger GC 3. Compact Java heap 4. Send OS reclamation hint OpenJ9 frees resources when applications are idling
  • 63. 68 JIT server JIT JVM JITServer JIT JVM JIT JVM Orchestrator load balancing, affinity, scaling, reliability JITServer
  • 64. 69 JITServer Performance Throughput benefits grow in constrained environments 0 200 400 600 800 1000 1200 1400 0 100 200 300 400 500 600 Throughput (pages/sec) Time (sec) --cpus=1, -m=300m JITServer OpenJ9 0 200 400 600 800 1000 1200 1400 0 100 200 300 400 500 600 Throughput (pages/sec) Time (sec) --cpus=1, -m=256m JITServer OpenJ9 0 200 400 600 800 1000 1200 1400 0 100 200 300 400 500 600 Throughput (pages/sec) Time (sec) --cpus=1, -m=200m JITServer OpenJ9 Smaller memory limit JIT server performance : Open Liberty Daytrader7 throughput
  • 65. 70 How to enable a JIT Server Launch OpenJ9 in client mode so that the VM sends requests to the JITServer using the following command: “-XX:+IseJITServer” Then run the following command to start a JITServer process that listens for incoming compilation requests: “jitserver”
  • 66. 71 71 Future tech to the rescue? Faster start-up for Java applications with CRIU snapshots
  • 67. 72 CRIU Checkpoint/Restore in Userspace (CRIU) is a potential solution for reducing start-up time in Java applications. CRIU is a feature on the Linux operating system that enables a snapshot (checkpoint) to be taken of a running application The application instance can then be restarted from the point at which the snapshot was taken.
  • 68. 73 CRIU 5-10 times improvement in start-up time, with the greater benefits of CRIU coming from more complex, slower to start, applications.
  • 69. 74 Challenges with CRIU • Lack of encryption on CRIU snapshots • No Address Space Layout Randomization (ASLR) • Predictable random number generators • Running as non-root user • No API to specify when the snapshot should be taken
  • 70. 77 77 Recap What if anything have you learned today?
  • 71. 78 How do you get the most out of your JVM? Write efficient code Use the right JVM for your needs Pick a runtime that is right for your application Use Profiling & Tweaking your JVM = Less Money & Energy!
  • 72. 79 Links and Materials JVM’s • AdoptOpenJDK: https://adoptopenjdk.net/ • OpenJ9: https://www.eclipse.org/openj9/ • HotSpot JDK: https://openjdk.java.net/groups/hotspot/ • Oracle JDK: https://www.oracle.com/uk/java/technologies/javase- downloads.html • GraalVM: https://www.graalvm.org/ • Azul (Zulu): https://www.azul.com/downloads/zulu-community/ • Amazon JDK: https://aws.amazon.com/corretto/ Runtimes • Open Liberty Site: https://openliberty.io/ • Open Liberty Guides: https://openliberty.io/guides • Quarkus Site: https://quarkus.io/ Other Useful Links • Jakarta EE Homepage: https://jakarta.ee/ • OpenJ9 JIT Server Doc: https://www.eclipse.org/openj9/docs/jitserver/ • OpenJ9 Class Data Sharing Doc: https://www.eclipse.org/openj9/docs/shrc/ • OpenJ9 Idle Tuning Doc: https://www.eclipse.org/openj9/docs/xxidletuninggconidle/
  • 73. 80 References to research for this talk • https://snyk.io/blog/36-of-developers-switched-from-oracle-jdk-to-an-alternate-openjdk- distribution-over-the-last-year/ • https://en.wikipedia.org/wiki/List_of_Java_virtual_machines • https://www.guru99.com/java-virtual-machine- jvm.html#:~:text=Java%20Virtual%20Machine%20(JVM)%20is,code%20for%20a%20pa rticular%20system. • https://dzone.com/articles/jvm-architecture-explained • https://www.quora.com/Whats-the-attraction-of-the-JVM-platform • https://stackify.com/java-performance-tuning/ • https://en.wikipedia.org/wiki/Comparison_of_Java_virtual_machines • https://www.baeldung.com/java-profilers
  • 74. 81 81 Thank You Jamie Lee Coleman Software Developer/Advocate @ IBM jlcoleman@uk.ibm.com @Jamie_Lee_C