4
I am developing a Java application but when performing some tests and noticed that when running the application, my memory consumption increases. And as the use, it always allocates more and more memory. It does not happen to drop the memory used between the interval of one application with another.
And as I use the application, it works until there is a burst of memory on the part of the machine.
When running the project using the Netbeans Profile tool, I noticed that with each request to the database, it opens a pool-thread and stops. Apparently this seems to be increasing my consumption.
I would like to know where I can start to check to improve the performance of my application.
I will post the code of the product registration process below so you can analyze more accurately:
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="SisPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.Sis.modelo.Funcionario</class>
<class>br.com.Sis.modelo.Pessoa</class>
<class>br.com.Sis.modelo.Grupo</class>
<class>br.com.Sis.modelo.Subgrupo</class>
<class>br.com.Sis.modelo.Produto</class>
<class>br.com.Sis.modelo.Ncm</class>
<class>br.com.Sis.modelo.Tributacao</class>
<class>br.com.Sis.modelo.Fornecedor</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/Sis?zeroDateTimeBehavior=convertToNull"/>
<property name="javax.persistence.jdbc.password" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="1234"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
Conexaojpa.java
public class ConexaoJPA {
public static EntityManager getEntityManager(){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("SisPU");
EntityManager em = emf.createEntityManager();
return em;
}
}
Productodao.java.
public class ProdutoDAO implements Serializable {
public EntityManager getEntityManager() {
return ConexaoJPA.getEntityManager();
}
public void create(Produto produto) {
EntityManager em = null;
try {
em = getEntityManager();
em.getTransaction().begin();
em.persist(produto);
em.getTransaction().commit();
} finally {
if (em != null) {
em.close();
}
}
}
}
Productocontrol.java
public class ProdutoControle {
public void inserir(int codgrupo, int codsubgrupo, int codtribut, String codbarras, int codfornecedor, String nomeproduto, String descproduto,
String unicomproduto, String univendproduto, String nomFornecedor, double qtdproduto, double qtdextproduto, double qtdemaxproduto,
double qtdeminproduto, double custoproduto, double valvendaproduto, double margproduto, String localproduto,
String tipoproduto, String finproduto, int dia_validproduto, String obsproduto, double codibptnac, double codibptimp) throws Exception {
Produto produto = new Produto();
produto.setCodgrupo(codgrupo);
produto.setCodsubgrupo(codsubgrupo);
produto.setCodtributacao(codtribut);
produto.setCodBarproduto(codbarras);
produto.setCodfornecedor(codfornecedor);
produto.setNomproduto(nomeproduto);
produto.setNomIdeproduto(descproduto);
produto.setUniComproduto(unicomproduto);
produto.setUniVenproduto(univendproduto);
produto.setNomfornecedor(nomFornecedor);
produto.setQtdproduto(BigDecimal.valueOf(qtdproduto));
produto.setQtdExtproduto(BigDecimal.valueOf(qtdextproduto));
produto.setQtdMaxproduto(BigDecimal.valueOf(qtdemaxproduto));
produto.setQtdMinproduto(BigDecimal.valueOf(qtdeminproduto));
produto.setValCusproduto(BigDecimal.valueOf(custoproduto));
produto.setValVenproduto(BigDecimal.valueOf(valvendaproduto));
produto.setMarLucproduto(BigDecimal.valueOf(margproduto));
produto.setLocproduto(localproduto);
produto.setTipproduto(tipoproduto);
produto.setFinproduto(finproduto);
produto.setDiaValproduto(dia_validproduto);
produto.setObsproduto(obsproduto);
produto.setCodibptnac(BigDecimal.valueOf(codibptnac));
produto.setCodibptimp(BigDecimal.valueOf(codibptimp));
new ProdutoDAO().create(produto);
}
}
I also have the class where I mapped the database fields that have my getters and setters and the visual, where I capture the data typed by the user.