锁定老帖子 主题:Java启动后内存达到2G
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-08
magicgrass 写道 justmoon 写道 主要是因为以前系统一直用的是32位的jdk,启动起来后内存大概才1G左右;现在就只将jdk换成了64位的,其他未动,不知道为什么启动后就2G了。JVM配置也未改过。
你配置jvm参数的时候没有声明jvm类型 是-server还是-client,这样就由jvm自动选择。 jvm类型是server 还是client由server-class machine 决定。 server-class machine 的判断标准 1. 2个或者两个以上的cpu 2 2g以上的物理内存 This definition of a server-class machine applies to all platforms, with the exception of 32-bit platforms running a version of the Windows operating system. 由于jvm的server和client类型在初始化的时候有很大不同,如垃圾回收器是否是并行的之类的等等,所以初始时所用的内存大小也不同。 查看jvm类型的最直接方式 java -version 命令 Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16, mixed mode) server Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing) client 参考 Memory Management in the JavaHotSpot™ Virtual Machine 第五章Ergonomics -- Automatic Selections and Behavior Tuning 文章我看了,但是我没有找到答案。我不管是使用32位的还是64位的jdk,操作系统(suse10,64位)是没变的,按文章的说法,jdk会自动选择是server级别的jvm。 |
|
返回顶楼 | |
发表时间:2011-08-09
32位的jre跑起来,最多只能申请到1.7G左右的内存。官方文档里面应该有相关的说明。
这也就是服务器一定要64位操作系统的原因啊。否则你硬件再牛叉,你系统只32位的,也用不上啊。 |
|
返回顶楼 | |
发表时间:2011-08-09
justmoon 写道 -Xms1024m ,我试过-Xms2048m,效果差不多,系统启动起来后,-Xms1024m的配置大约在1.8G上下, Xms2048m在2.1G左右。
“64位默认-server 32位默认-client” ,是什么意思呢? 你可以具体看下这几个值的意思 -Xms表示的是 设置堆最小内存,-Xmx设置的是堆最大. 至于“64位默认-server 32位默认-client” 是错误的.具体参考楼上说的 ,我觉得已经很清楚了 |
|
返回顶楼 | |
发表时间:2011-08-09
64位比32位JVM性能差10%-20%
|
|
返回顶楼 | |
发表时间:2011-08-09
java_user 写道 64位比32位JVM性能差10%-20% 能不能所的详细点?
|
|
返回顶楼 | |
发表时间:2011-08-09
java_user 写道 64位比32位JVM性能差10%-20%
同意.虽然我具体不清楚具体差多少性能. 相同的程序在64位jdk中小号的内存比32位的大,这是因为指针膨胀以及数据类型对齐补白造成的.. |
|
返回顶楼 | |
发表时间:2011-08-10
感觉java就是用内存来换性能的,对于高并发量的系统,一直不觉得java有好的解决方案
|
|
返回顶楼 | |
发表时间:2011-08-10
如果是高并发量的系统,基本都是通过集群来解决的.其实对于java的执行性能问题,现在基本上也不是什么问题了.现在的JIT编译器生成的本地代码,执行效率并不比C++的代码差.至少是一个数量级的.
至于楼上说的内存换性能,这个不是很理解为什么会有这种说法.你是指java对于自动内存管理或者数组越界检测之类的内存开支么?我的理解是,你既然要用智能手机,那么肯定要比黑白操作系统的手机占内存的. |
|
返回顶楼 | |
发表时间:2011-08-10
chenjingbo 写道 如果是高并发量的系统,基本都是通过集群来解决的.其实对于java的执行性能问题,现在基本上也不是什么问题了.现在的JIT编译器生成的本地代码,执行效率并不比C++的代码差.至少是一个数量级的.
确实没有什么内存换性能的说法。Java性能差已经是过去的事情了。
至于楼上说的内存换性能,这个不是很理解为什么会有这种说法.你是指java对于自动内存管理或者数组越界检测之类的内存开支么?我的理解是,你既然要用智能手机,那么肯定要比黑白操作系统的手机占内存的. |
|
返回顶楼 | |