This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// As vezes com a praticidade em criar objetos e com a dinamica da GC não tratamos alocação de objetos de maneira correta. | |
// Acabamos, por vício ou esquecimento, deixando a GC com mais trabalho e consequentemente a aplicação mais lenta. | |
// Exemplifico isso de maneira simples com o código abaixo, e sugiro reflexão | |
// Ruim | |
// Percebam a criação de uma instancia de "Font" para cada campo | |
// Serão criados vários objetos em memória, para a mesma utilização, setar uma fonte igual para os campos | |
txtNome = new JTextField(); | |
txtNome.setFont(new Font("Tahoma", Font.PLAIN, 10)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Alocar recursos apenas quando eles serão realmente utilizados. | |
// Isso ajuda a GC a trabalhar melhor, pois repassa trabalho para ela apenas quando necessário, | |
// pois o recurso de memória e processamento só é alocado quando for necessitado. | |
// Também diminui o tempo de 'lock' em algumas rotinas e conexões. | |
// Ruim | |
Session session = getSession(); // criou session aqui... | |
try { | |
StringBuillder sb = new StringBuilder(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Não utilizar o operador '+' para concatenar strings no StringBuilder. | |
// Sempre utilizar o método append(). | |
// Para cada concatenação dentro do append com o operador '+', a VM cria um novo StringBuilder. | |
// Isso gera uma criação desnecessária de objetos, tendo gasto com processamento e memória e também atrapalhando a GC. | |
// Ruim | |
StringBuilder sql = new StringBuilder(); | |
sql.append("select * from tabela "); | |
sql.append("where "); | |
sql.append("id = " + id); // aqui a VM gera: sql.append(new StringBuilder().append("id = ").append(id)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.dg2ee.io; | |
import java.io.BufferedInputStream; | |
import java.io.DataInputStream; | |
import java.io.File; | |
import java.io.FileInputStream; | |
import java.io.IOException; | |
public class BufferedInputStreamExample { | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.dg2ee.jdbc; | |
import java.sql.DriverManager; | |
import java.sql.Connection; | |
import java.sql.SQLException; | |
import java.sql.Statement; | |
import java.text.DateFormat; | |
import java.text.SimpleDateFormat; | |
public class JDBCStatementInsertExample { |