1 / 60

GERENCIAMENTO DE MEMÓRIA EM JAVA

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

Download Presentation

GERENCIAMENTO DE MEMÓRIA EM JAVA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

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

  4. 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

  5. IMAGEM ARQUITETURA DA JVM

  6. 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.

  7. IMAGEM PROGRAM COUNTER

  8. IMAGEM HEAP

  9. 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.

  10. IMAGEM CRIAÇÃO DE OBJETO

  11. IMAGEM DESALOCAÇÃO DE OBJETO

  12. 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

  13. JAVA • WINDOWS

  14. 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--; • } • } • }

  15. GRÁFICO VETOR ESTÁTICO JAVA - WINDOWS

  16. 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

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

  18. 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

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

  20. 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--; • } • } • }

  21. GRÁFICO LISTA ENCADEADA JAVA - WINDOWS

  22. GRÁFICO COMPARATIVO ESTRUTURAS EM JAVA - WINDOWS

  23. C++ WINDOWS

  24. 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--; • } • }

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

  26. 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--; • } • }

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

  28. 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++; • }

  29. LISTA ENCADEADA C++ - WINDOWS

  30. GRÁFICO COMPARATIVO ESTRUTURAS C++ - WINDOWS

  31. JAVA LINUX

  32. 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--; • } • } • }

  33. VETOR ESTÁTICO JAVA - LINUX

  34. 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

  35. VETOR DINÂMICO(ARRAYLIST) JAVA - LINUX

  36. 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

  37. VETOR DINÂMICO(VECTOR) JAVA - LINUX

  38. 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--; • } • } • }

  39. LISTA ENCADEADA JAVA - LINUX

  40. COMPARATIVO ENTRE ESTRUTURAS - LINUX

  41. C++ LINUX

  42. 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--; • } • }

  43. VETOR ESTÁTICO C++ - LINUX

  44. 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--; • } • }

  45. VETOR DINÂMICO C++ - LINUX

  46. 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

  47. LISTA ENCADEADA C++ - LINUX

  48. COMPARATIVO ENTRE ESTRUTURAS C++ - LINUX

  49. JAVA X C++

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

More Related