日期:2014-05-20  浏览次数:20766 次

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

------解决方案--------------------
等大神~~~~
------解决方案--------------------
jvm的内存参数不一样吧,一般要求运行在server模式~
------解决方案--------------------
我觉得这两者之间应该不会有太大区别啊,都是运行同一个jar,需要的资源应该都几近相同(即使运行环境不同会造成些微差别)但不应该有很大区别理论上。是不是测试上有什么问题
------解决方案--------------------
探讨

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

------解决方案--------------------
即使两种运行方式的参数不一样也不至于差别这么大吧,jar只是相当于一个文件夹,所以跟打包成jar或不打包成jar的关系不会很大
netbean没用过,查一下有没有类似于eclipse的启动参数的配置,直接在命令行中用和netbean相同的启动参数执行试试看
------解决方案--------------------
不会吧 源码看看 还是应该从源码找原因的 毕竟大多数软件不这样
------解决方案--------------------
超内存有很多中情况的。

JVM栈 Native栈 方法区 常量池 堆。

你用加参数来测试内存总感觉不太好,可以用Jconsole或者Jvisualvm.来监控下虚拟机进程。

这个两个工具在你jdk/bin下就有。给后者按上插件。用起来非常不错。