Code Bye

SSH项目在tomcat下运行tomcat内存一直增长,直到tomcat挂掉

tomcat的内存也配置过了,set JAVA_OPTS=-server -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=256m ,但内存一直涨,垃圾回收后内存也比以前高


40分
怀疑内存泄漏,打一个threaddump出来看内存对象树,或者kill -3 生成core来分析看泄漏点
         ,肯定是某个地方没释放资源啦 。。下个监控工具看看具体是哪里的问题
下一个监控软件看看,是什么对象没有被回收
当出现内存溢出时,可以使用jmap(java自带的工具)导出内存模型,然后通过jhat可以生成html样式的文件,你分析一下就可以了。
具体:jmap -dump:format=b,file=/home/kk/test.map  pid
           jhat /home/kk/test.map

然后自己分析下

jdk自带的jvisualvm  查一下

“C:\Program Files\Java\jdk1.8.0_25\bin\jvisualvm.exe”

引用 5 楼 tianfang 的回复:

jdk自带的jvisualvm  查一下

“C:\Program Files\Java\jdk1.8.0_25\bin\jvisualvm.exe”

这是内存使用的截图

我一直怀疑是数据库某些资源没释放掉,大神们看看我的Spring配置对么
<!-- 事务处理 -->
	<bean id="myHibTxManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	<tx:advice id="txAdvice" transaction-manager="myHibTxManager">
		<tx:attributes>
			<!-- 对get/load/search开头的方法要求只读事务 -->
			<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="load*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="search*" propagation="SUPPORTS" read-only="true" />
			<!-- 对其它方法要求事务 -->
			<tx:method name="*" propagation="REQUIRED" />
		</tx:attributes>
	</tx:advice>
	<aop:config>
		<aop:pointcut id="serviceMethods"
			expression="execution(* com.gtzc.service.impl.*.*(..))" />
		<!-- 织入 -->
		<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods" />
	</aop:config>
看有没有死循环
[
引用 9 楼 liangtu33 的回复:

看有没有死循环

 没死循环

检查是否有不断增长的Application会话数据

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明SSH项目在tomcat下运行tomcat内存一直增长,直到tomcat挂掉