在java大并发时,请求的时候new新的对象,这样对内存的消耗会增大,有什么技术能解决这个问题?

解决方案 »

  1.   

    在java代码的处理上难道没有办法解决嘛?比如采用单例模式new对象?
      

  2.   

    new新的对象?不要求每次都是新的对象?
    如果是这样,那就做成单例
      

  3.   

    要看你的需求了,如果要求每次都是新的对象,那就不能做成单例了。可以尝试提醒下jvm回收,比如加上system.gc().另外可以批量的产生对应,不要一下都产生完所有的
      

  4.   

    不要认为 new 一个对象是一个件很费时费内存的工作,其实不然,new 一个对象只占用十几个 CPU 时钟周期,以及只有十来个字节的内存。而作为局部变量的对象,会在 JVM 内存达到阀值的时候被 GC 回收掉,所以不需要考虑 new 对象对于内存的消耗。另外,绝对不要在代码中使用 System.gc() 进行垃圾回收,这样做会产生更差的性能。应在 java 后面加上 -XX:+DisableExplicitGC 这个 HotSpot 虚拟机参数,以禁止显式地调用 System.gc(),暨让这个调用不做任何事情。
      

  5.   

    比如我说一个情况,客户端发送请求信息到接口,然互接口开始创建java对象,创建缓存通道,创建数据库BLF对象,然后一系列取数据操作,这样的一个数量级的对象对内存是不是消耗很小?
      

  6.   

    采用对象池,还有不要显示调用System.gc()方法。
      

  7.   


    问一下,你是不是学过《深入java虚拟机》。你好像对虚拟机很了解...