浏览 5169 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-12
最后修改:2009-01-12
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml") ; 在利用Spring的时候我们经常能要写上边这段代码 但是有些粗心的程序员 会毫无考虑的 在程序中写成上边那样 写的地方无外乎构造函数 或者程序里边用到的地方 殊不知这样写 很可能会造成JVM栈区溢出 原因很简单 new ClassPathXmlApplicationContext("applicationContext.xml") ; 就是给所有的工厂管理BEAN分配内存 而如果上边代码不是单例或者使用该段代码的类不是单例 那就不停的给所配置BEAN分配内存 如果HIBERNATE的SessionFactory也交由SPRING 管理 那么ENTITY就更加耗费内存了 所以好的习惯是 将factory设置为单例模式 或者将使用BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml") ;的类设置为单例 比如如果BeanFactory是依靠WEB.XML初始化的 那么他默认就是单例的 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-01-12
有不停new 新实例的人吗?
|
|
返回顶楼 | |
发表时间:2009-01-12
javatracker 写道 有不停new 新实例的人吗? 本人就是。。。。 哈哈哈。 |
|
返回顶楼 | |
发表时间:2009-01-14
最后修改:2009-01-14
javatracker 写道 有不停new 新实例的人吗?
我想没有人故意的去不停的new一个新实例 但是往往在开发过程中不注意细节的时候 就会产生此种情况 比如说 在B类写程序的时候突然发现要用到了A类 可以说一般情况下会去NEW A 并不是所有人都考虑是否new A带来些不便 |
|
返回顶楼 | |
发表时间:2009-01-14
lzb7213 写道 javatracker 写道 有不停new 新实例的人吗?
我想没有人故意的去不停的new一个新实例 但是往往在开发过程中不注意细节的时候 就会产生此种情况 比如说 在B类写程序的时候突然发现要用到了A类 可以说一般情况下会去NEW A 并不是所有人都考虑是否new A带来些不便 除了测试想不到有什么地方会用到这个,,开发一般是配一次大家一起用. |
|
返回顶楼 | |
发表时间:2009-01-14
抛出异常的爱 写道 lzb7213 写道 javatracker 写道 有不停new 新实例的人吗?
我想没有人故意的去不停的new一个新实例 但是往往在开发过程中不注意细节的时候 就会产生此种情况 比如说 在B类写程序的时候突然发现要用到了A类 可以说一般情况下会去NEW A 并不是所有人都考虑是否new A带来些不便 除了测试想不到有什么地方会用到这个,,开发一般是配一次大家一起用. 呵呵 仁兄可能对spring的使用场景有点误解吧 在一般性的WEB应用中 也许正如仁兄所说 但是SPRING并不是为WEB而生的 任何一个讲解SPRING的人 绝对不会在一开始将SPRING和WEB 联系起来 更就不会谈到说什么把那个文件配置在什么地方大家公用就行了 其次 理解仁兄的配置公用 可以理解为父类里边 子类继承 那么就不会存在子类里边随便new实例了 但是当父类被别的类调用的时候 还是有可能会出现问题 其次 这个观点是从我项目中来的 在我检查项目代码的时候 就发现好几个程序员在代码中用到的时候并没有单例factory 继而导致JVM栈区溢出 所以说 有些事情看上去很简单 说出来大家也许都知道 可是在实际应用的时候 还是会出问题 |
|
返回顶楼 | |