【发布时间】:2012-05-15 10:51:09
【问题描述】:
在有状态 EJB 上的 @remove 注释示例中,带注释的方法使 bean 的实例变量无效。为什么?销毁 bean 肯定会破坏其内容,即任何变量?
谢谢, 乔恩
【问题讨论】:
标签: java jakarta-ee ejb javabeans stateful
在有状态 EJB 上的 @remove 注释示例中,带注释的方法使 bean 的实例变量无效。为什么?销毁 bean 肯定会破坏其内容,即任何变量?
谢谢, 乔恩
【问题讨论】:
标签: java jakarta-ee ejb javabeans stateful
如果使用 ejbRemove(),实例的属性被擦除干净,客户端仍然有实例的引用。客户端仍然可以访问相同的对象。这是不可取的。
【讨论】:
将对象的所有字段设置为null 有两个有用的效果:
它提供了一个硬屏障,防止逻辑错误导致无效对象被重用。应用程序会崩溃,而不是默默地产生不正确的结果。
它通过从对象引用图中删除边来帮助 Java VM 垃圾收集器,从而提高整体性能。
【讨论】:
null。如果它是正常操作过程中的简单分配,那很好而且很有帮助,至少根据我的分析器。如果它需要通过显式遍历复杂结构来复制 GC 的操作,那么这是一个非常糟糕的主意。一般来说,在进行此类微优化之前,应该先分析他们的程序......
您可以发布示例源代码吗?或者不要。不需要主动设置null - 当 EJB 被销毁并很快被垃圾收集时,它引用的所有对象(当然前提是没有其他对它们的引用)也将被垃圾收集。
【讨论】: