论坛首页 Java企业应用论坛

一段代码引起项目失败

浏览 19299 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (3) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-03-11  
开了两遍才明白循环引用出现的问题点。个人觉得更多的还是在工程师1的责任

0 请登录后投票
   发表时间:2011-03-11  
http://jiluo093.iteye.com/blog/953388
0 请登录后投票
   发表时间:2011-03-11  
这个问题,平时也很少注意,确实让人深思
0 请登录后投票
   发表时间:2011-03-11  
jiluo093 写道
问一个问题啊,我在用tomcat6+ssh+jotm测试jta时,如果两个数据源都是基于MySQL的就可以,如果一个是MySQL,一个是SqlServer,就不能回滚,请问哪位遇到过吗????

没有用过SqlServer所以不知道你说的问题出现在那个环节,不过你可以查看下两个数据库事务的设置,先前去掉Mysql数据源检测SqlServer的事务是否正常,如果正常在检测下嵌套事务规则,不知道MySql和SqlServer在一个事务中是否能回滚。
引用:
PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY -- 支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW -- 新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER -- 以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED -- 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
0 请登录后投票
   发表时间:2011-03-11  
是发布失败,不是项目失败。两种性质。
此帖有标题党嫌疑
0 请登录后投票
   发表时间:2011-03-11  
标题党,又不是发射火箭,而且仅仅是buildMessage,仅是一个bug而已。
0 请登录后投票
   发表时间:2011-03-11  
chenyongxin 写道
kidneyball 写道
chenyongxin 写道
kidneyball 写道
没看出跟垃圾回收有什么关系。按这个逻辑来看,加入代码3后,只要Map里面有东西,就会导致循环调用,引起StackOverflow。是调用栈的overflow。

而在没加入之前,Map的自引用应该是不会阻碍垃圾回收的。就算有什么东西没有被垃圾回收,也是出现Out Of Memory,而不是StackOverflow。重不重启虚拟机跟这里的问题完全没有关系。

呵呵,谢谢指点,你可以参考下jvm对强引用对象的垃圾回收机制,不过我只是提到垃圾回收而已,只是想说明这段代码不但存在死循环的递归调用,对于内存的释放也是存在点问题的。系统中这样的少量代码存在并且少量被调用不会引起问题,但是大量存在我不相信不会out of memory 否则教科书都是骗人的--什么垃圾回收,内存释放 毛用!


教科书倒没有骗人。。。不过这里又跟强引用对象有什么关系呢,莫非jvm的垃圾回收机制是引用计数?

现在都不用引用计数了,而是查找引用链了,到根的引用链如果不能到达认为是垃圾,不过这是我好几年前的知识了,最近没有仔细研究过,如果有问题请指教。


python still use reference counting for basic types....
0 请登录后投票
   发表时间:2011-03-11  
这也太夸张了,项目的失败是由这个BUG决定的啊?难道这是航空/军事软件?
0 请登录后投票
   发表时间:2011-03-11   最后修改:2011-03-11
永恒守护者 写道
这也太夸张了,项目的失败是由这个BUG决定的啊?难道这是航空/军事软件?


应该是指eclipse里的一个java项目运行失败了
0 请登录后投票
   发表时间:2011-03-11  
依然没看懂.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics