Top Banner
Java Virtual Machine Bruno Coan
32

Introdução Java virtual machine

Aug 16, 2015

Download

Software

Bruno Coan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introdução Java virtual machine

Java Virtual Machine

Bruno Coan

Page 2: Introdução Java virtual machine

Agenda

• Introdução a JVM• Parâmetros• Garbage Collection• Just in time compiler JIT• ClassLoader

Page 3: Introdução Java virtual machine

Java Virtual MachineO que é?

Page 4: Introdução Java virtual machine

Java Code (.java)

JAVAC compiler

JVM JVM

Byte Code (.class)

JVM

Windows Linux Mac

Page 5: Introdução Java virtual machine

Distribuições

• HotSpot – Oracle/Sun (base)• JRockit - Oracle/BEA• J9 – IBM.

Page 6: Introdução Java virtual machine

Scala

JVM

Byte Code

Clojure JRuby

Page 7: Introdução Java virtual machine

Linguagens que rodam na JVM

Page 8: Introdução Java virtual machine

Parâmetros

O que são?Para que servem?

Page 9: Introdução Java virtual machine

Parâmetros

-Xmxs1024m Configuração de memória Heap

-Xmx1024m Configuração de memória Heap

-XX:MaxPermSize=128m Configuração da Permanent Generation

-verbose:gc Habilita log do garbage Collector

-Xint Desabilita o JIT

Page 10: Introdução Java virtual machine

Garbage Collection

Page 11: Introdução Java virtual machine

Mark-And-Sweep• Mark

• Sweep

Page 12: Introdução Java virtual machine

Hipótese das Gerações

• 95% dos objetos tem vida extremamente curta.

• O restante costuma ter vida longa.

Page 13: Introdução Java virtual machine

Generational Copying

Young Generation Old Generation

Page 14: Introdução Java virtual machine

HotSpot

Eden Survivor 0

Survivor 1

Young Ternured

Minnor Collect Major Collect

Page 15: Introdução Java virtual machine

Mark-And-Sweep + Compact

Page 16: Introdução Java virtual machine

Divisão de Memória - JVM

Page 17: Introdução Java virtual machine

Collector Serial

Page 18: Introdução Java virtual machine

Collector Parallel

Page 19: Introdução Java virtual machine

Collector Concurrent

Page 20: Introdução Java virtual machine

Garbage First – G1

Page 21: Introdução Java virtual machine

Ergonomics

• A partir java 1.5;• O algoritmo de Garbage Collection;• O tamanho da memória heap;• O compilador de tempo de execução.

Page 22: Introdução Java virtual machine

Just in Time Compiler - JIT

• Java 1.1 (Symantec)• Compilação dinâmica• Heurística

Page 23: Introdução Java virtual machine

Cliente

• Habilitado através do parâmetro –client;• Foco em inicialização rápida;• Deixa de fazer certas otimizações para

economizar memória;

Page 24: Introdução Java virtual machine

Servidor

• Habilitado através do parâmetro –server;• Performance a longo prazo;• Compilação mais agressiva;

Page 25: Introdução Java virtual machine

Recomendação

• Programe baseado em boas práticas;• O JIT faz o resto;

Page 26: Introdução Java virtual machine

Carregamento de classes• Loading -Localiza o arquivo (.class) e carrega seu ByteCode;

• Linking– Verification -Verifica se o ByteCode está correto;

– Preparation –Prepara estrutura para acomodar métodos, atributos;

– Resolving –Carrega todas as dependências referenciadas pela classe;

• Initializing –Blocos estáticos são executados e atributos estáticos são inicializados;

Page 27: Introdução Java virtual machine

ClassLoaders

• BootStrap– Único que não possui pai;– Carrega classes do rt.jar (java.lang);

• Extension– Tem BootStrap como pai;– Carrega classes da pasta lib/ext;

• Application– Tem Extension como pai;– Carrega classes do CLASSPATH;

BootStrap Classloader

Extension Classloader

Application Classloader

Page 28: Introdução Java virtual machine

ClassLoaders Container

BootStrap Classloader

Extension Classloader

Application Classloader

Container ClassLoader

WebApp1 ClassLoader

WebApp2 ClassLoader

Page 29: Introdução Java virtual machine

ClassLoader Hell

• NoSuchMethodError;• ClassCastException;• Java 1.6 incluiu API JAXB 2.0

Page 30: Introdução Java virtual machine

Endorsed

• Configurado pelo parâmetro -Djava.endorsed.dirs=;• Jars carredos antes do diretório ext ;• Maneira de dizer para JVM que você confia em

determinado jar;

Page 31: Introdução Java virtual machine
Page 32: Introdução Java virtual machine