"java -server"和"java -client"之间有什么实际的区别吗?我在Sun的网站上找到的只是一个模糊的" - 服务器启动较慢但应该运行得更快".有什么真正的区别?(目前使用JDK 1.6.0_07.)
我正在关注这个问题并发现所有信息都已过时.
最新的指南似乎是关于GC调整的文档.在其中,Oracle定义了他们愚蠢的术语人体工程学,我认为这只是合理("舒适")默认值.在该文件中,提到了该文件,该文件在上述SO问题中被大量引用.
它声称最大堆大小计算如下:
较小的物理内存的1/4或1GB.在J2SE 5.0之前,默认的最大堆大小为64MB.您可以使用-Xmx命令行选项覆盖此默认值.
这显然是假的,因为我有一台我测试过的机器有12 GB的RAM和4096 MB,经过验证java -XX:+PrintFlagsFinal -version | grep HeapSize.但需要注意的是:
注意:为堆大小指定的边界和分数对于J2SE 5.0是正确的.随着计算机变得越来越强大,它们在后续版本中可能会有所不同.
哪个好极了!除了我找不到任何关于此的最新文档.我验证了我在运行这个问题的服务器类.为什么这很重要?因为我的12 GB服务器类机器默认为170 MB.一切都打破了.是的,我知道我可以覆盖它.我宁愿不必在我运行的每个应用程序中复制该覆盖,我宁愿不将其硬编码到pom文件中.更重要的是,这个数字在我的机器上以某种方式随机改变,我需要了解它是如何被碰撞的.
这是我的java版本:
$ java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我在Mac OS X 10.9.2上.