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

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

JAVA Orientação a Objetos
Aula Teste INFNET terça-feira, 11 de janeiro de 2011
TADS – Tipos Abstratos de Dados
Projeto de Sistemas de Software
Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Arquitetura da Máquina Virtual Java
Walfredo Cirne walfredo.dsc.ufpb.br
Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios.
Wagner Santos C. de Jesus
Aula 4 Nomes, Vinculações, Tipos e Escopos
2002/2003 Programação Orientada para Objectos 1 Aula 3 Utilização de listas Melhorando a implementação das listas e iteradores Reflexão sobre interfaces.
CRIANDO OBJETOS EM JAVA
Google Go Pós-Graduação em Modelagem Computacional – PGMC
Concorrência em Java Threads em Java.
Tipos Agregados Homogêneos e Listas
Adriano da Silva Castro
Alunos: Bruno Tourinho Tomas Jonathan Augusto da Silva.
JAVA Linguagem Ambiente de Desenvolvimento
GEJAVA IV SCJA – Certificação Sun java associado exame cx
Alocação Dinâmica de Memória
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Paradigmas e Ferramentas de Desenvolvimento de Software – Revisão da linguagem C++ Lúbia Vinhas DPI - INPE.
Cristiano Soares Rafael di Lego Roberto Nemirovsky Thiago Nascimento
Capítulo 5 Garbage Collector.
Aula 3 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.
Ambiente de Execução - Rotinas
Orientação a Objetos e Java Graduação em Ciência da Computação
Aula 1 - Fundamentos Java SE Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros – Agosto/2009.
Garbage Collection O que é Garbage Collector? É o coletor de lixo que é utilizado pela JVM para a limpeza da memória.
Módulo I Capítulo 5: Vetores
Listas Simplesmente Encadeadas
Capítulo VIII Ambientes de Execução
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Wagner Santos C. de Jesus
Introdução às Java Threads
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Aula Prática 4 Monitoria IP/CC (~if669).
Polimorfismo.
Monitoria IP ~if669 Garbage Collection e pacotes.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Exceções Suzana Fragoso (smpf) Adaptado do material de Guilherme Carvalho (gvc)
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Coleções em Java - Parte 2
Construtores e Destrutores
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Estruturas de Dados Aula 9 -2: Listas simplesmente encadeadas sem sentinela e sem cabeçalho 19/06/2013.
Estruturas de Dados Aula 10: Listas (parte 2) 07/05/2014.
GARBAGE COLLECTOR 1 UNIVERSIDADE FEDERAL DO PARÁ - UFPA.
Performance Java Flávia Falcão |
Programação Prof.: Bruno Rafael de Oliveira Rodrigues.
Performance Java Flávia Falcão |
Estrutura de Dados II Alocação Dinâmica. Alocação de memória Ao ser executado, um programa carrega seu código executável para a memória; Uma parte da.
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Estruturas de Dados Dinâmicas IF672 - Algoritmos e Estruturas de Dados.
Capítulo 8 Threads.
Introdução à POO em Java Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.
© Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti.
Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho
Associação. 2 Desafio – Aula class Aluno { 2. private String nome; 3. private float nota; 4. public Aluno(String nome, float nota){ 5. this.nome.
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Raniere ferreira do prado
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Java Básico Lab Ruddá Beltrão | Cristian Costa.
Minicurso Java Básico Ruddá Beltrão | Cristian Costa.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
ProgramaçãoConcorrente Glêdson Elias
Transcrição da apresentação:

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

MOTIVAÇÃO BRIGAS C++ X JAVA BRIGAS WINDOWS X LINUX BRIGAS SOFTWARE LIVRE X SOFTWARE PROPRIETÁRIO

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

IMAGEM ARQUITETURA DA JVM

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.

IMAGEM PROGRAM COUNTER

IMAGEM HEAP

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.

IMAGEM CRIAÇÃO DE OBJETO

IMAGEM DESALOCAÇÃO DE OBJETO

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

JAVA WINDOWS

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--; }

GRÁFICO VETOR ESTÁTICO JAVA - WINDOWS

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 lista = new ArrayList (); int y = 200; while(y>=0){ for(int i=0;i<lista.size();i++){ lista.add(0); } y--; } FORMA NÃO OTIMIZADA

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

CÓDIGO VETOR DINÂMICO(VECTOR) import java.util.List; import java.util.Vector; public class VetorDinamicoVector{ public static void main(String[] args) { List lista = new Vector (); int y = 200; while(y>=0){ for(int i=0;i<lista.size();i++){ lista.add(0); } y--; } FORMA NÃO OTIMIZADA

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

CÓDIGO LISTA ENCADEADA import java.util.LinkedList; public class ListaEncadeada{ public static void main(String[] args) { LinkedList lista = new LinkedList (); int y = 200; while(y>=0){ for(int i=0;i<lista.size();i++){ lista.add(0); } y--; }

GRÁFICO LISTA ENCADEADA JAVA - WINDOWS

GRÁFICO COMPARATIVO ESTRUTURAS EM JAVA - WINDOWS

C++ WINDOWS

CÓDIGO VETOR ESTÁTICO #include int main() { int vetor[1000]; int y = 200; while(y>=0) { for(int i=0;i<1000;i++) { vetor[i]=0; } y--; }

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

CÓDIGO VETOR DINÂMICO #include int main() { int *vetor = new int[10000]; int y = 200; while(y>=0) { for(int i=0;i<10000;i++) { vetor[i]=0; } y--; }

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

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++; }

LISTA ENCADEADA C++ - WINDOWS

GRÁFICO COMPARATIVO ESTRUTURAS C++ - WINDOWS

JAVA LINUX

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--; }

VETOR ESTÁTICO JAVA - LINUX

CÓDIGO VETOR DINÂMICO(ARRAYLIST) import java.util.ArrayList; import java.util.List; public class VetorDinamicoArrayList{ public static void main(String[] args) { List lista = new ArrayList (); int y = 200; while(y>=0){ for(int i=0;i<lista.size();i++){ lista.add(0); } y--; } FORMA NÃO OTIMIZADA

VETOR DINÂMICO(ARRAYLIST) JAVA - LINUX

CÓDIGO VETOR DINÂMICO(VECTOR) import java.util.List; import java.util.Vector; public class VetorDinamicoVector{ public static void main(String[] args) { List lista = new Vector (); int y = 200; while(y>=0){ for(int i=0;i<lista.size();i++){ lista.add(0); } y--; } FORMA NÃO OTIMIZADA

VETOR DINÂMICO(VECTOR) JAVA - LINUX

CÓDIGO LISTA ENCADEADA import java.util.LinkedList; public class ListaEncadeada{ public static void main(String[] args) { LinkedList lista = new LinkedList (); int y = 200; while(y>=0){ for(int i=0;i<lista.size();i++){ lista.add(0); } y--; }

LISTA ENCADEADA JAVA - LINUX

COMPARATIVO ENTRE ESTRUTURAS - LINUX

C++ LINUX

CÓDIGO VETOR ESTÁTICO C++ - LINUX #include 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--; }

VETOR ESTÁTICO C++ - LINUX

CÓDIGO VETOR DINÂMICO C++ - LINUX #include 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--; }

VETOR DINÂMICO C++ - LINUX

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

LISTA ENCADEADA C++ - LINUX

COMPARATIVO ENTRE ESTRUTURAS C++ - LINUX

JAVA X C++

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

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

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

JAVA X C++ - LISTA ENCADEADA - WINDOWS 16%(média)

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

JAVA X C++ - VETOR ESTÁTICO - LINUX 4x(média)

JAVA X C++ - VETOR DINÂMICO - LINUX 49x(média)

JAVA X C++ - LISTA ENCADEADA - LINUX

WINDOWS X LINUX

COMPARATIVO WINDOWS X LINUX

PERGUNTAS?!!!