用ssh写了一个oj系统,在程序运行期间操作多了都会jvm溢出,感觉这是getSession()的问题,就在网上找,搞了半天,终于明白了一点,HebernateDaoSupport getSession()直接用是不会关闭,就在spring 配置文件中配置如下:
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<!-- 事务拦截器bean 需要依赖注入一个事务管理器-->
<property name="transactionManager">
<ref local="transactionManager" />
</property>
<property name="transactionAttributes">
<!-- 下面定义事务传播属性-->
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="dele*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="query*">PROPAGATION_REQUIRED</prop>
<prop key="valid*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="attachDirty*">PROPAGATION_REQUIRED</prop>
<prop key="Edit*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
又在但程序运行时候会出现问题,说是session is closed();这个问题是我程序代码中有一部分session做了手工关闭,于是就去掉这样才可以运行。
为我改好后用服务器运行一下,观察了一下内存,启动时用了63.*m,我进行了几次操作后观察,内存是70M,,又做了多个操作,但内存始终是80M左右。程序运行速度很快。但是不知道还不能在优化一下。