introdução java virtual machine

32
Java Virtual Machine Bruno Coan

Upload: bruno-coan

Post on 16-Aug-2015

175 views

Category:

Software


3 download

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