请教高手在做代码优化的时候发现有很多Swing的控件在关闭程序的时候没有置空,这会不会是在做压力测试时候OutOfMeoryError的真凶呢?

解决方案 »

  1.   

    Swing不都是单机版的么,怎么还有压力?推荐jdk自带的jvisualvm.exe配合压力测试使用,可以找到内存泄露的根源。
      

  2.   

    也不尽然吧,和web服务器的性能也有关系的吧
      

  3.   

    是applet放到网页中撒有jvisualvm.exe JDK 啥子版本的,我只想问下,没有置为null,CG就不去回收么?
      

  4.   

    有的系统Swing也是一个不错的选择
      

  5.   


    我的是1.6  1.5可能也有吧。
    不设置为null也是可以的,GC不会弱智到只回收指向null的对象的。我只想问下,没有置为null,CG就不去回收么?
      

  6.   

    没有道理不回收啊,但是不知道是不是这个地方导致的内存泄露,因为在页面加载applet的时候不停的关闭打开,测了几个小时就出现了,基本上每隔半分钟关闭打开一次,而居我观察,JVM好像在关闭applet所在的时候并没有关闭,而是必须打开applet的相关页面都关闭的时候才关闭
      

  7.   

    刚刚看到  火龙果的 说 :"内存溢出与内存泄漏是两回事!内存溢出是指内存不够用了而内存泄漏指的是指代码中使用内存指针访问了一块不该访问的空间,像 Windows 上经常会有 0xXXXXXX 内存不为 read/write 就是典型的内存泄漏。"所以来纠正一个词  就是内存溢出而不是泄露了
      

  8.   

    客户端的东西怎么会有压力,即使是applet也是在客户端运行的,跟服务端一毛钱关系都没有
      

  9.   

    问下,在一个网页中,打开applet所在的网页,关闭applet所在的网页,这样重复做几个小时,JVM就出现了OutOfMeoryError的错误,难道这不算是压力测试的一种么?
      

  10.   


    那也跟swing没关系,swing是运行在客户端的。你的压力可能来自客户端发送到服务器的请求,服务器处理时有资源没有释放。但是跟swing和applet绝对没有关系
      

  11.   

    你说的也有道理,有可能是跟服务器交互的时候资源没有释放,但是我感觉OutofMeoryError貌似主要是因为创建的大量的类没有被gc回收从而出现的但是我非常不同意你说  swing和applet没有任何关系,
       applet里面就不能够加载swing的组建么?难道applet就只能够用awt的组建么
      

  12.   


    ^_^你还是没明白我的意思,我是说applet是在客户端运行的,不会给你的服务器增加什么负载
      

  13.   

    如果跟服务端建立了Socket通讯呢?那就应该另当别论了吧
      

  14.   


    怪我刚才没说明白,我们不是一直再说swing的问题么swing一定是在客户端运行的,你服务端的问题绝对跟swing释没释放没有关系
      

  15.   

    我现在郁闷的是,现在的代码是以前别人写的,现在由我来维护,一个人呢全部都在销毁的时候将对象置null
    一个人呢,所有的都没有置null
    所以现在就是这套代码我到底是怎么去维护