GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

60
GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA

Transcript of GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

Page 1: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

GERENCIAMENTO DE MEMÓRIA EM JAVA

ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA

Page 2: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

ORGANIZAÇÃO• Alocação de memória em java• Windows

– RESULTADOS JAVA– RESULTADOS C++– COMPARAÇÃO JAVA X C++

• LINUX– RESULTADOS JAVA– RESULTADOS C++ – COMPARAÇÃO JAVA X C++

• COMPARAÇÃO LINUX X WINDOWS• CONCLUSÕES

Page 3: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

MOTIVAÇÃO

• BRIGAS C++ X JAVA• BRIGAS WINDOWS X LINUX• BRIGAS SOFTWARE LIVRE X SOFTWARE

PROPRIETÁRIO

Page 4: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

INTRODUÇÃO AO GERENCIAMENTO DE MEMÓRIA EM JAVA

• A GERÊNCIA PROPRIAMENTE DITA É “ESCONDIDA” DO PROGRAMADOR.

• QUEM GERENCIA TODA A MEMÓRIA É A JVM.• SE O PROGRAMADOR QUISER(OU PRECISAR)

SABER COMO A MEMÓRIA ESTÁ SENDO ALOCADA ELE PODE USAR O COMANDO:

• javap –c nomeDaClasse

Page 5: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

IMAGEM ARQUITETURA DA JVM

Page 6: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

INTRODUÇÃO AO GERENCIAMENTO DE MEMÓRIA EM JAVA

• EM JAVA, ASSIM COMO EM OUTRAS LINGUAGENS, A MEMÓRIA DINÂMICA FICA NO HEAP, E A ESTÁTICA(LINEAR) NA STACK.

• CADA THREAD TEM SEU PRÓPRIO PC(PROGRAM COUNTER) DENTRO DA JVM, E ESSE PC É ATUALIZADO A CADA INSTRUÇÃO DO BYTECODE.

Page 7: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

IMAGEM PROGRAM COUNTER

Page 8: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

IMAGEM HEAP

Page 9: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

INTRUDUÇÃO AO GERENCIAMENTO DE MEMÓRIA EM JAVA

• COM EXCEÇÃO DA CLASSE STRING, TODAS AS OUTRAS INSTANCIAÇÕES PRECISAM DO “new” OU DO “newInstance()”.

• ASSIM COMO C++, JAVA TAMBÉM TEM DESTRUTOR!

• NO JAVA TAMBÉM EXISTEM MEMORY LEAKS, APESAR DA JVM.

• A DESALOCAÇÃO DE MEMÓRIA É FEITA ATRAVÉS DO GARBAGE COLLECTOR.

Page 10: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

IMAGEM CRIAÇÃO DE OBJETO

Page 11: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

IMAGEM DESALOCAÇÃO DE OBJETO

Page 12: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

INTRODUÇÃO AO GERENCIAMENTO DE MEMÓRIA EM JAVA

• ALGORITMOS DE GARBAGE COLLECTION:– REFERENCE COUNTING ALGORITHM– CYCLE COLLECTING ALGORITHM.

• VANTAGENS:– DIMINUI MEMORY LEAKS– DIMINUI SEGMENTATION FAULTS

• DESVANTAGENS:– ROTINAS DE GC GERALMENTE SÃO PESADAS– DIMINUIÇÃO DA EFICIÊNCIA

Page 13: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

JAVA

• WINDOWS

Page 14: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO DO VETOR ESTÁTICO• public class VetorEstatico {

• public static void main(String[] args) {• int []vetor = new int [10000];• int y = 200;• while(y>=0){• for(int i=0;i<vetor.length;i++){• vetor[i]=0;• }• y--;• }• }

• }

Page 15: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

GRÁFICO VETOR ESTÁTICO JAVA - WINDOWS

Page 16: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO DO VETOR DINÂMICO(ARRAYLIST)

• import java.util.ArrayList;• import java.util.List;

• public class VetorDinamicoArrayList{

• public static void main(String[] args) {• List<Integer> lista = new ArrayList<Integer>();• int y = 200;• while(y>=0){• for(int i=0;i<lista.size();i++){• lista.add(0);• }• y--;• }• }

• }

FORMA NÃO

OTIMIZADA

Page 17: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

GRÁFICO VETOR DINÂMICO(ARRAYLIST) JAVA - WINDOWS

Page 18: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO VETOR DINÂMICO(VECTOR)• import java.util.List;• import java.util.Vector;

• public class VetorDinamicoVector{

• public static void main(String[] args) {• List<Integer> lista = new Vector<Integer>();• int y = 200;• while(y>=0){• for(int i=0;i<lista.size();i++){• lista.add(0);• }• y--;• }• }

• }

FORMA NÃO

OTIMIZADA

Page 19: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

GRÁFICO VETOR DINÂMICO(VECTOR) JAVA - WINDOWS

Page 20: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO LISTA ENCADEADA• import java.util.LinkedList;

• public class ListaEncadeada{

• public static void main(String[] args) {LinkedList<Integer> lista = new LinkedList<Integer>();

• int y = 200;• while(y>=0){• for(int i=0;i<lista.size();i++){• lista.add(0);• }• y--;• }• }

• }

Page 21: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

GRÁFICO LISTA ENCADEADA JAVA - WINDOWS

Page 22: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

GRÁFICO COMPARATIVO ESTRUTURAS EM JAVA - WINDOWS

Page 23: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

C++

Page 24: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO VETOR ESTÁTICO • #include<iostream>

• int main()• {• int vetor[1000];• int y = 200;• while(y>=0)• {• for(int i=0;i<1000;i++)• {• vetor[i]=0;• }• y--;• }• }

Page 25: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

GRÁFICO VETOR ESTÁTICO C++ - WINDOWS

Page 26: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO VETOR DINÂMICO• #include<iostream>

• int main()• {• int *vetor = new int[10000];• int y = 200;• while(y>=0)• {• for(int i=0;i<10000;i++)• {• vetor[i]=0;• }• y--;• }• }

Page 27: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

GRÁFICO VETOR DINÂMICO C++ - WINDOWS

Page 28: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO LISTA ENCADEADA• void add(const T &x, bool no_fim=true) {• nodo *q = new nodo(x);• if (cnt==0)• ptraiz=q;• else {• if (no_fim) {• nodo *p = ptraiz;• while (p->prox!=0) p=p->prox;• p->prox=q;• } else {• q->prox = ptraiz;• ptraiz = q;• }• }• cnt++;• }

Page 29: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

LISTA ENCADEADA C++ - WINDOWS

Page 30: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

GRÁFICO COMPARATIVO ESTRUTURAS C++ - WINDOWS

Page 31: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

JAVA

Page 32: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO VETOR ESTÁTICO• public class VetorEstatico {

• public static void main(String[] args) {• int []vetor = new int [10000];• int y = 200;• while(y>=0){• for(int i=0;i<vetor.length;i++){• vetor[i]=0;• }• y--;• }• }

• }

Page 33: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

VETOR ESTÁTICO JAVA - LINUX

Page 34: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO VETOR DINÂMICO(ARRAYLIST)

• import java.util.ArrayList;• import java.util.List;

• public class VetorDinamicoArrayList{

• public static void main(String[] args) {• List<Integer> lista = new ArrayList<Integer>();• int y = 200;• while(y>=0){• for(int i=0;i<lista.size();i++){• lista.add(0);• }• y--;• }• }

• }

FORMA NÃO

OTIMIZADA

Page 35: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

VETOR DINÂMICO(ARRAYLIST) JAVA - LINUX

Page 36: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO VETOR DINÂMICO(VECTOR)• import java.util.List;• import java.util.Vector;

• public class VetorDinamicoVector{

• public static void main(String[] args) {• List<Integer> lista = new Vector<Integer>();• int y = 200;• while(y>=0){• for(int i=0;i<lista.size();i++){• lista.add(0);• }• y--;• }• }

• }

FORMA NÃO OTIMIZADA

Page 37: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

VETOR DINÂMICO(VECTOR) JAVA - LINUX

Page 38: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO LISTA ENCADEADA• import java.util.LinkedList;

• public class ListaEncadeada{

• public static void main(String[] args) {LinkedList<Integer> lista = new LinkedList<Integer>();

• int y = 200;• while(y>=0){• for(int i=0;i<lista.size();i++){• lista.add(0);• }• y--;• }• }

• }

Page 39: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

LISTA ENCADEADA JAVA - LINUX

Page 40: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

COMPARATIVO ENTRE ESTRUTURAS - LINUX

Page 41: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

C++

Page 42: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO VETOR ESTÁTICO C++ - LINUX• #include<iostream>

• int main(int argc,char []argv)• {• int vetor[10000];;• int y = 200;• while(y>=0)• {• for(int i=0;i<10000;i++)• {• vetor[i]=0;• }• y--;• }• }

Page 43: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

VETOR ESTÁTICO C++ - LINUX

Page 44: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO VETOR DINÂMICO C++ - LINUX

• #include<iostream>

• int main(int argc,char []argv)• {• int *vetor = new int[10000];• int y = 200;• while(y>=0)• {• for(int i=0;i<10000;i++)• {• vetor[i]=0;• }• y--;• }• }

Page 45: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

VETOR DINÂMICO C++ - LINUX

Page 46: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

CÓDIGO LISTA ENCADEADA C++ - LINUX

• void add(const T &x, bool no_fim=true) {• nodo *q = new nodo(x);• if (cnt==0)• ptraiz=q;• else {• if (no_fim) {• nodo *p = ptraiz;• while (p->prox!=0) p=p->prox;• p->prox=q;• } else {• q->prox = ptraiz;• ptraiz = q;• }• }• cnt++;• }• bool del(const

Page 47: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

LISTA ENCADEADA C++ - LINUX

Page 48: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

COMPARATIVO ENTRE ESTRUTURAS C++ - LINUX

Page 49: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

• • JAVA X C++

Page 50: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

Comparativos Windows

• VETOR ESTÁTICO• VETOR DINÂMICO(ARRAYLIST)• LISTA ENCADEADA

Page 51: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

JAVA X C++ - VETOR ESTÁTICO - WINDOWS

Page 52: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

JAVA X C++ - VETOR DINÂMICO- WINDOWS

Page 53: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

JAVA X C++ - LISTA ENCADEADA - WINDOWS

16%(média)

Page 54: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

COMPARATIVOS LINUX

• VETOR ESTÁTICO • VETOR DINÂMICO(ARRAYLIST)• LISTA ENCADEADA

Page 55: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

JAVA X C++ - VETOR ESTÁTICO - LINUX

4x(média)

Page 56: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

JAVA X C++ - VETOR DINÂMICO - LINUX

49x(média)

Page 57: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

JAVA X C++ - LISTA ENCADEADA - LINUX

Page 58: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

WINDOWS X LINUX

Page 59: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

COMPARATIVO WINDOWS X LINUX

Page 60: GERENCIAMENTO DE MEMÓRIA EM JAVA ALUNOS: ANTÔNIO FLÁVIO(in memorian) E HEDLEY LUNA.

• PERGUNTAS?!!!