gerenciamento de mem ria em java n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
GERENCIAMENTO DE MEMÓRIA EM JAVA PowerPoint Presentation
Download Presentation
GERENCIAMENTO DE MEMÓRIA EM JAVA

Loading in 2 Seconds...

play fullscreen
1 / 60
octavius-roberts

GERENCIAMENTO DE MEMÓRIA EM JAVA - PowerPoint PPT Presentation

66 Views
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. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

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