- 浏览: 1234348 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (461)
- 心得体会 (166)
- Hibernate (9)
- Spring (12)
- Struts1 (3)
- Ajax (4)
- Java (54)
- 其他技术 (21)
- 数据库 (29)
- EXT (0)
- Struts2 (7)
- Xml (3)
- HTML (5)
- JavaScript (12)
- 面试相关 (3)
- BLOG (11)
- 计算机 (11)
- PMP (0)
- OGNL (1)
- LINUX (79)
- AIX (1)
- Ubuntu (14)
- Android (1)
- hadoop (3)
- LINUX debian (3)
- 心得体会 eclipse (2)
- JSTL (1)
- 心得体会 hadoop cdh3u5 (2)
- maven (5)
- Hive (1)
- 心得体会 工具使用 (3)
- spring data jpa Query By Example(QBE) (1)
- nginx (2)
- Apache (1)
- mysql (6)
- LINUX mysql (2)
- freemaker (1)
- 心得体会 FastDFS Nginx 断点续传 (1)
- LINUX FastDFS Nginx 断点续传 (1)
- 心得体会 Mybatis (2)
- 心得体会 mysql (4)
- php (1)
- logback 简介 (5)
- EL (1)
- Tomcat (2)
- win7 (1)
- LINUX maven (1)
- scrumworks (1)
- linux nginx (6)
- svn linux (1)
- mac (3)
- mac git (1)
- git (1)
- nexus (2)
- golang (1)
- LINUX Redis (1)
- mac oracle (1)
最新评论
-
a785975139:
有用
MySQL Error :SHOW PROFILES -
yijiulove:
弄了半天,参照你的方法解决了.特来感谢,知道可能是先加载,但是 ...
Spring和Mybatis整合时无法读取properties的处理方案 -
chenjinqi1987:
Missing com.sun.jdmk:jmxtools:jar:1.2.1 -
leifeng2:
请问怎么使用,运行之后d盘符没有生产音频文件呢?
java录音程序 -
sundful:
chenghong726 写道你好,我也遇到你这样的问题,按照 ...
Spring和Mybatis整合时无法读取properties的处理方案
今年年初,DZone 网站对 Mark Thomas 针对 Tomcat 7 的内存泄漏保护的功能进行了采访,Mark Thomas 是 SpringSource 的首席软件工程师,同时也是 Tomcat 的代码提交负责人。
在 Tomcat 7 中引入了一项新的功能:内存泄漏保护。该功能可以解决Web应用中的很多种会导致内存泄漏的问题,特别是在应用重新加载时候的内存释放问题。
下面是具体访谈的内容(水平有限,对内容做了很多精简,详情请看英文版):
DZone:什么原因会导致Web应用重新加载时的内存泄漏,这个内存泄漏是怎么表现出来的?
Mark Thomas:
最直接的现象就是 PermGen 产生 OutOfMemoryError 的错误,然后 Tomcat 挂掉。
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,如果你的WEB APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
为了防止该问题的发生,必须保证重载时 Web 应用的类加载器没有保存任何对象的引用。
DZone:请告诉我们Tomcat 以前在重载时的内存泄漏问题
。
Mark Thomas:
Tomcat 的这个问题在我加入这个项目之前就一直都存在。
DZone:那么是不是所有 Tomcat 中会导致内存泄漏问题的 Bug 都已经修复了呢?
Mark Thomas:
应该说是我们已知的所有问题都已经得到解决,可能还存在一些未知的问题。
下图是 Tomcat 的虚拟机内存剖析:
DZone:程序库、Java API 都有什么样的bug会导致内存泄漏呢?
Mark Thomas:
内存泄漏问题都有相同的原因,例如在Web应用的ClassLoader初始化一个对象,然后这个对象将自己的引用保存到某个实例或者 Registry中,当重载时从 ClassLoader 撤销这个对象时,Registry引用的对象还在,这样就会导致内存泄漏。
一般程序库可能存在内存泄漏的地方有:
1.JDBC 驱动注册
2.一些日志框架
3.在 ThreadLocal 中保存对象,但是并不去删除它
4.启动了线程,但没有停止它
而 Java API 存在内存泄漏的地方包括:
1.使用 javax.imageio API (the Google Web Toolkit can trigger this)
2.使用 java.beans.Introspector.flushCaches() (Tomcat does this to prevent memory leaks caused by this caching)
3.使用 XML 解析器 (the root cause is unknown due to a bug in the JRE)
4.使用 RMI 远程方法调用(somewhat ironically, causes a leak related to the garbage collector)
5. 从 Jar 文件中读取资源
DZone:请告诉我们,Tomcat 7 是如何处理这些问题的
?
Mark Thomas:
问题的关键在于 Tomcat 7 的 WebappClassLoader 类的 clearReferences() 方法。
对于前面提到的 Java API 中存在问题,通过确保 Tomcat 核心第一次使用这些 API ,然后让应用去调用,来防止内存泄漏。关于如何保护内存泄漏,请看JreLeakPreventionListener class
。
DZone:依你看来,在控制内存泄漏方面,Tomcat 7 比现有版本的 Tomcat 有多大的提升?
Mark Thomas:
有显著的提升,呵呵
DZone:Tomcat 7 的开发进展如何,有一个确切的发布日期吗?
Mark Thomas:
Tomcat 7 的开发进展非常顺利,JSP 和 EL 2.2 规范已经实现,Servlet 3.0 的规范实现也接近完成。
DZone:关于 Tomcat 7 ,你还有什么其他要补充的吗?
Mark Thomas:
Tomcat 7 在嵌入式方面同样做了很多改进,比以往的任何一个版本,更加适合嵌入。另外 Tomcat 社区一直在寻找新贡献者,希望能有更多的人加入 Tomcat 的开发
发表评论
-
springboot中spring.profiles.include的妙用
2019-09-30 10:03 1917我们有这样的一个spring ... -
java8--List转为Map、分组、过滤、求和等操作
2018-09-14 16:07 2765利用java8新特性,可以用简洁高效的代码来实现一些数据 ... -
intelliJ IDEA 文件修改之后的蓝色
2018-04-12 10:37 2361intelliJ IDEA链接svn之后,当文件发生修 ... -
Restful与webService区别
2018-02-13 09:59 712有好多人问我们在设计底层服务的时候到底是应该选 ... -
InputStream为什么不能被重复读取?
2017-07-17 14:36 918首先,熟悉Java的人可能都知道,Java中的Inputst ... -
CentOS下SWAP分区建立及释放内存
2016-02-18 14:20 3620方法一: 一、查看系统当前的分区情况:>free - ... -
CentOS下挂载硬盘(fdisk,mkfs.ext4,mount)
2016-02-18 13:55 7038centos挂载硬盘 挂载硬盘步骤: 1. 先分区 ... -
七个对我最重要的职业建议
2015-12-17 13:19 538Nicholas C. Zakas 是全世 ... -
Centos安装Vsftpd
2015-11-03 19:10 848安装部分摘自开源中国,最后红色部分解决无法登陆(cannot ... -
在logback中配置mybatis显示sql
2015-07-08 11:56 1132第一种方式、直接在logback.xml配置文件中添加: ... -
git 删除远程分支
2015-06-25 14:58 980一不小心把本地的临时分支push到server上去了,想要删除 ... -
httpclient 上传、下载文件
2015-04-20 18:53 1058/** * 上传文件 * @throws Pars ... -
Java 7, Jenkins, Ubuntu 12.10 64bit issues
2015-01-20 16:44 828While installing Jenkins 1.486 ... -
在CentOS中安装中文字体
2014-08-08 14:25 1811以linux下安装宋体,黑体为例,介绍字体安装方法:第一步、 ... -
JCaptcha 验证码添加干扰线,显示中文验证码
2014-08-08 13:30 8557import java.awt.Color; import ... -
nginx记录post参数和自定义头信息
2014-08-01 19:10 20501.版本:nginx/1.4.4 记录post参数: ... -
理解 JMeter 聚合报告(Aggregate Report)
2014-06-27 17:01 9592Aggregate Report 是 JMeter 常用的一 ... -
系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
2014-06-26 14:34 2346一.系统吞度量要素: ... -
web 性能测试中的几个关键指标:并发用户数,QPS,用户平均请求等待时间
2014-06-26 13:40 1032关于并发用户数和QPS,自己一直被这两个概念纠结,阅读了一下相 ... -
QPS、PV和需要部署机器数量计算公式(转)
2014-06-26 11:33 1178术语说明:QPS = req/sec = 请求数/秒 【Q ...
相关推荐
咨询项目中的专家访谈技巧讲义.ppt
教育精品资料
2018网络安全宣传周专家访谈.pdf
树立正确的程序员思想,学会合适的学习方法。
此文档是关于企业CMMI评审访谈,PI(开发)部分的问题及答案的相关整理内容。文中列举了数十个问题,真实经历整理总结。希望能帮到各位小伙伴。。 此文档是关于企业CMMI评审访谈,PI(开发)部分的问题及答案的相关...
500-ChatGPT-AIGC+重磅上市公司和行业专家访谈合集.pdf
精品教育教学资料
2018网络安全宣传周专家访谈系统、持续提升网民网络安全意识.pdf
我国PCB业当前面临几个问题的讨论—PCB专家访谈录.pdf
小学生访谈报告
CMMI三级认证 编码 PI访谈问题与答案个人总结整理CMMI三级认证 编码 PI访谈问题与答案个人总结整理CMMI三级认证 编码 PI访谈问题与答案个人总结整理CMMI三级认证 编码 PI访谈问题与答案个人总结整理CMMI三级认证 ...
人力资源部人员访谈纪录汇编7.doc
非物质文化遗产保护的思考与设想:欧洲学者的视角—德国马普研究所三学者访谈.docx
温州医科大学眼视光医院:聚焦儿童眼视光的规范诊疗——《豪雅青少年儿童眼视光白皮书》专家访谈第二站
温州医科大学眼视光医院:聚焦儿童眼视光的规范诊疗——《豪雅青少年儿童眼视光白皮书》专家访谈第二站.pdf
在线访谈系统,视频访谈系统,采用php+mysql开发,包括嘉宾设置,主持人设置,主题添加,网友留言,后台审核,图片发布,前台采用ajax技术刷新留言
尽职调查访谈笔录
小学生心理访谈记录.doc