10-GarbageCollection e Pacotesif669/material/pdfsAte2015.2/10-Garbage... · // Create a...

of 6/6
© Ricardo Massa e Sérgio Soares 1 Graduação em Ciência da Computação - CIn/UFPE - Introdução à Programação - IF669 Garbage Collection e Pacotes AULA 10 Introdução a Programação – IF669 http://www.cin.ufpe.br/~if669
  • date post

    19-Jan-2020
  • Category

    Documents

  • view

    3
  • download

    0

Embed Size (px)

Transcript of 10-GarbageCollection e Pacotesif669/material/pdfsAte2015.2/10-Garbage... · // Create a...

  • © Ricardo Massa e Sérgio Soares 1

    Graduação em Ciência da Computação - CIn/UFPE - Introdução à Programação - IF669

    Garbage Collection e Pacotes

    AULA 10

    Introdução a Programação – IF669 http://www.cin.ufpe.br/~if669

  • © Ricardo Massa e Sérgio Soares 2

    Graduação em Ciência da Computação - CIn/UFPE - Introdução à Programação - IF669

    String processString(String s){

    // Create a StringBuffer object to process the string in. StringBuffer b = new StringBuffer(s);

    // Process it somehow… // return it as a String. Just forget about the StringBuffer object: // it will be automatically garbage collected. return b.toString(); }

    Já usou o objeto e não precisa mais dele?

    Ignore-o!!! public static void main(String argv[]) { int big_array[] = new int[100000];

    // Do some computations with big_array and get a result. int result = compute(big_array);

    // We no longer need big_array. It will get garbage collected when // there are no more references. Since big_array is a local variable, // it refers to the array until this method returns. But this // method doesn't return. So we've got to get rid of the reference // ourselves, just to help out the garbage collector. big_array = null;

    // Loop forever, handling the user's input. for(;;) handle_input(); }

    Tentando forçar o “abandono” de um objeto!

    É o oposto de um construtor

    O GC não consegue liberar determinados recursos de um objeto:

    descritor de arquivos – fechar arquivo sockets – terminar conexão

    Nesses casos, você deve escrever um método finalize para tratar desses casos

    Pode haver apenas um finalize por classe!

    // Checks the file descriptor first to make sure !// it is not already closed.!protected void finalize() throws IOException {! if (fd != null) close();!}!

  • © Ricardo Massa e Sérgio Soares 3

    Graduação em Ciência da Computação - CIn/UFPE - Introdução à Programação - IF669

    1.  finalize é chamado antes que o sistema colete o objeto

    2.  interpretador Java pode terminar sem que todos os objetos tenham sido eliminados. Nesse caso, os recursos pendentes são removidos pelo sistema operacional

    3.  Java não oferece garantias sobre quando o GC irá executar ou sobre a ordem de coleta dos objetos - o mesmo ocorre com a ordem de execução dos finalize pendentes

    PACOTES

    Depois desta aula você será capaz de desenvolver sistemas mais reusáveis e extensíveis, organizando as classes do sistema em “módulos” que podem ser analisados, reusados e modificados isoladamente ou com o auxílio de outros poucos “módulos”.

    Arrays This class contains various methods for manipulating arrays (such as sorting and searching).

    Calendar Calendar is an abstract base class for converting between a Date object and a set of integer fields such as YEAR, MONTH, DAY, HOUR, and so on.

    Hashtable This class implements a hashtable, which maps keys to values.

    Random An instance of this class is used to generate a stream of pseudorandom numbers.

    Stack The Stack class represents a last-in-first-out (LIFO) stack of objects.

    Vector The Vector class implements a growable array of objects.

    ... ...

  • © Ricardo Massa e Sérgio Soares 4

    Graduação em Ciência da Computação - CIn/UFPE - Introdução à Programação - IF669

    package exemplos; public class /*...*/

    package exemplos.banco; public class /*...*/

  • © Ricardo Massa e Sérgio Soares 5

    Graduação em Ciência da Computação - CIn/UFPE - Introdução à Programação - IF669

    26

    GUI

    Modelo

    Persistência

    Entendimento Modular

    Mudanças Modular

    Desenvolvimento em Paralelo

    27

    Persistência Modelo

    GUI

    28

    http://www.cin.ufpe.br/

    Classe Pessoa

    Pacote br.ufpe.cin

    package br.ufpe.cin;

    import br.ufpe.cin.util.Endereco;

    public class Pessoa {

    private Endereco endereco; private String nome;

    public Pessoa(String nome) { this.nome = nome; }

    }

  • © Ricardo Massa e Sérgio Soares 6

    Graduação em Ciência da Computação - CIn/UFPE - Introdução à Programação - IF669

    31