为什么在netbeans下性能测试 内存使用峰值也就200m,即使正常在netbeans下运行,也很顺利。而cmd下执行 java -jar 会超过800m 而且抛出outofmemory 异常?
请问这两种运行方式有什么区别?

解决方案 »

  1.   

    jvm的内存参数不一样吧,一般要求运行在server模式~
      

  2.   

    能否具体说明 我只加了一个 -Xms800m 貌似都不够用
      

  3.   

    我觉得这两者之间应该不会有太大区别啊,都是运行同一个jar,需要的资源应该都几近相同(即使运行环境不同会造成些微差别)但不应该有很大区别理论上。是不是测试上有什么问题
      

  4.   

    赞同这个观点,在IDE中启动Server时应该是开发模式,一般会有默认的启动参数来调整JVM的内存。
      

  5.   

    我也觉得netbeans run的不是jar文件,应该是其他模式。因为,工程里在build之前是没有jar文件的,而run的时候不需要build,我觉得可能还是build的配置有问题,整个程序在cmd下,内存好像是从来不回收一样,持续上升,但是这方面配置的资料不好找,希望大家帮忙。
      

  6.   

    即使两种运行方式的参数不一样也不至于差别这么大吧,jar只是相当于一个文件夹,所以跟打包成jar或不打包成jar的关系不会很大
    netbean没用过,查一下有没有类似于eclipse的启动参数的配置,直接在命令行中用和netbean相同的启动参数执行试试看
      

  7.   

    超内存有很多中情况的。JVM栈 Native栈 方法区 常量池 堆。你用加参数来测试内存总感觉不太好,可以用Jconsole或者Jvisualvm.来监控下虚拟机进程。这个两个工具在你jdk/bin下就有。给后者按上插件。用起来非常不错。
      

  8.   

    谢谢大家回答,还是没找到原因。不过期间有一次修改了程序后,突然cmd下运行内存占用变得和netbeans一样多了,本来很高兴的,但是又修改了以后,又出现原来的情况了,还是莫名其妙的感觉。
    netbeans run的参数怎么找也找不到,没有eclipse那么好找。