Java虚拟机(JVM)内存泄漏
在本章中将讨论Java中的内存泄漏概念。
以下代码在Java中创建内存泄漏 -
void queryDB() { try{ Connection conn = ConnectionFactory.getConnection(); PreparedStatement ps = conn.preparedStatement("query"); // executes a SQL ResultSet rs = ps.executeQuery(); while(rs.hasNext()) { //process the record } } catch(SQLException sqlEx) { //print stack trace } }
在上面的代码中,当方法退出时,没有关闭连接对象。因此,在GC被触发之前物理连接保持打开并且看到连接对象不可达。现在,它将在连接对象上调用final
方法,但是,它可能无法实现。因此,在该循环中不会对对象进行垃圾收集。
同样的事情将在下一次发生,直到远程服务器发现连接已经打开了很长时间并强制终止它。因此,没有引用的对象长时间保留在存储器中,这会产生泄漏。
上一篇:Java虚拟机(JVM)调整GC
下一篇:没有了
分类导航
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
关注微信小程序
扫描二维码
程序员编程王