GoConqr has a new look! Let us know what you think.

Mind map

Comportamento de memória, arrays e listas

Andrezza Medeiros Computação Portuguese

Map content

Comportamento de memória, arrays e listas

  1. Tipos referência vs. tipos valor

    • O Java possui dois tipos de dados que são divididos em por valor (tipos primitivos) e por referência (tipos por referência). Os tipos primitivos são boolean, byte, char, short, int, long, float e double. Os tipos por referência, são classes que especificam os tipos de objeto Strings, Arrays Primitivos e Objetos.
    • Tipo valor (primitivos)
      • Em Java, tipos primitivos são tipos valor. Tipos valor são CAIXAS e não ponteiros. Uma variável do tipo primitivo pode armazenar exatamente um valor de seu tipo declarado por vez, quando outro valor for atribuído a essa variável, seu valor inicial será substituído. As variáveis de instância de tipo primitivo são inicializadas por padrão, as variáveis dos tipos byte, char, short, int, long, float e double são inicializadas como 0, e as variáveis do tipo boolean são inicializadas como false. Esses tipos podem especificar seu próprio valor inicial para uma variável do tipo primitivo atribuindo à variável um valor na sua declaração.
    • Tipo referência (classes)
      • Os programas utilizam as variáveis de tipos por referência para armazenar as localizações de objetos na memória do computador. Esses objetos que são referenciados podem conter várias variáveis de instância e métodos dentro do objeto apontado. Para trazer em um objeto os seus métodos de instância, é preciso ter referência a algum objeto. As variáveis de referência são inicializadas com o valor “null” (nulo).
  2. Desalocação de memória- garbage collector e escopo local

    • • Objetos alocados dinamicamente, quando não possuem mais referência para eles, serão desalocados pelo garbage collector • Variáveis locais são desalocadas imediatamente assim que seu escopo local sai de execução
    • Memória heap
      • É o espaço reservado pela JVM para a alocação de objetos em memória. Toda alocação de objeto em Java é realizada na memória heap. Da mesma forma, toda vez que um objeto é desalocado, a memória utilizada por este retorna como memória disponível para a heap; O heap é considerado dinâmico. Em geral você aloca ou desaloca pequenos trechos de memória, só para a necessidade do dado. Esta alocação pode ocorrer fisicamente em qualquer parte livre da memória disponível para seu processo. O gerenciamento de memória virtual do sistema operacional, auxiliado por instruções do processador, ajudam a organizar isto.
      • Desalocação de memória
        • Collection
          • Processo automático de gerenciamento da memória heap, baseado em duas atividades: busca de objetos que não são mais acessíveis, e desalocação dos recursos utilizados por estes objetos;
          • Collector
            • algoritmo que realiza uma collection
          • Throughput (vazão)
            • porcentagem de tempo de execução não utilizada em collections, ou seja, teoricamente é o total de tempo de execução disponível para a aplicação, considerado sobre longos períodos de tempo
          • Pausa
            • momento de tempo onde a aplicação fica não-responsiva porque uma collection está acontecendo
        • Garbage Collector
          • • É um processo que automatiza o gerenciamento de memória de um programa em execução • O garbage collector monitora os objetos alocados dinamicamente pelo programa (no heap), desalocando aqueles que não estão mais sendo utilizados.
          • Garbage
            • Um objeto é considerado “garbage” quando não é mais acessível de qualquer referência do programa em execução.
    • Memória Stack
      • Na pilha, são guardados objetos alocados dentro de escopos de funções incluindo variáveis locais das funções, argumentos, endereços das áreas de código sendo executadas antes de outras chamadas de função, retorno de funções.
      • Escopo local
        • Na memória stack, a desalocação é feita por escopos locais. A alocação de memória ocorre de forma sequencial e, como a posição desses objetos é conhecida durante o tempo de compilação, nós podemos atribuir nomes próprios a esses objetos e acessá-los diretamente. Quando um objeto que é alocado no stack sai de seu respectivo escopo, o objeto é automaticamente deletado. Não é preciso se preocupar com alocação e desalocação de memória com objetos da pilha, porém o stack tem um tamanho limitado.
  3. Vetores/arrays

    • • Em programação, "vetor" é o nome dado a arranjos unidimensionais • Arranjo (array) é uma estrutura de dados: • Homogênea (dados do mesmo tipo) • Ordenada (elementos acessados por meio de posições) • Alocada de uma vez só, em um bloco contíguo de memória • Vantagens: • Acesso imediato aos elementos pela sua posição • Desvantagens: • Tamanho fixo • Dificuldade para se realizar inserções e deleções
  4. Unboxing

    • É o processo de conversão de um objeto tipo referência para um objeto tipo valor compatível
  5. Wrapper classes

    • • São classes equivalentes aos tipos primitivos • Boxing e unboxing é natural na linguagem • Uso comum: campos de entidades em sistemas de informação (IMPORTANTE!) • Pois tipos referência (classes) aceitam valor null e usufruem dos recursos OO
  6. Boxing

    • É o processo de conversão de um objeto tipo valor para um objeto tipo referência compatível
  7. Laço for each

    • Sintaxe opcional e simplificada para percorrer coleções Sintaxe: for (Tipo apelido : coleção) { <comando 1> <comando 2> } Leitura: "para cada objeto 'obj' contido em vect, faça:"
  8. Listas

    • • Lista é uma estrutura de dados: • Homogênea (dados do mesmo tipo) • Ordenada (elementos acessados por meio de posições) • Inicia vazia, e seus elementos são alocados sob demanda • Cada elemento ocupa um "nó" (ou nodo) da lista • Tipo (interface): List • Classes que implementam: ArrayList, LinkedList, etc. • Vantagens: • Tamanho variável • Facilidade para se realizar inserções e deleções • Desvantagens: • Acesso sequencial aos elementos *(sendo possível otimizar esse processo)
  9. Matrizes

    • • Em programação, "matriz" é o nome dado a arranjos bidimensionais • Atenção: "vetor de vetores" • Arranjo (array) é uma estrutura de dados: • Homogênea (dados do mesmo tipo) • Ordenada (elementos acessados por meio de posições) • Alocada de uma vez só, em um bloco contíguo de memória • Vantagens: • Acesso imediato aos elementos pela sua posição • Desvantagens: • Tamanho fixo • Dificuldade para se realizar inserções e deleções

Information

Description
Computação Mind Map on Comportamento de memória, arrays e listas, created by Andrezza Medeiros on 10/07/2020.
Views
0
History
  • Created by Andrezza Medeiros · Jul 10, 2020
  • Copied by Andrezza Medeiros · Jul 10, 2020
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?