锁定老帖子 主题:JVM内存最大能调多大
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-16
这个还跟os相关的
|
|
返回顶楼 | |
发表时间:2007-05-16
正常情况下
在Windows平台上不要超过1G 可以调其它的参数 如Heap Space内存 隔代收集算法 等 并不是内存越大就越运行的越好 |
|
返回顶楼 | |
发表时间:2007-05-16
Why Windows?
|
|
返回顶楼 | |
发表时间:2007-05-16
因为Linux下我没有调过
所以只说Windows下面的 |
|
返回顶楼 | |
发表时间:2007-05-17
这里有人压根在胡扯. 32bit程序最大内存访问空间是4G, 2的32次方,这是硬件决定的,跟windows linux没有任何关系. Windows2000上不能利用超过4G的内存,一般是2G的内存保留给进程,2G内存保留给核心的。在Windows2000 Advanced Server上可以分配3G给进程,1G留给核心的.
但是对于某些linux和windows,他们的OS进程确实可以访问到4G以上内存, 这是通过一些特殊技术得到的,redhat linux AS 2.1 或者AS3.0下是通过VLM,windows adv. server则是AWE技术. 参数如下: multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server" /3GB /PAE 16GB以上只能选3GB或者PAE一种. 但是对于其他进程来说还是突破不了4G上限,甚至包括oracle也是如此,在oracle中,则是通过将内存当作文件来访问的,虚拟一个 /dev/shm 的文件系统,这个文件系统是完全由内存组成的,这样才突破4g的限制。 |
|
返回顶楼 | |
发表时间:2007-05-17
我建议你做Tomcat集群。当然前提是你的程序支持Cluster。每个JVM都可以用1G左右。这是一种充分利用内存、增加系统负载能力的办法。
IBM的WAS部署时可以选择分布式部署,也就是在一台应用服务器上,装两个WAS,然后把应用发布到这两台WAS上,前面有个apache做负载均衡。当然啦,这不是cluster。Tomcat是否也可以这样,我没有试过,理论上是可以。CMS网站大多数都这样。 不过,一定要注意,你们的应用系统,在Tomcat上究竟需要多大内存,不是越大越好。越大,往往意味着GC的时间越长,要知道,在GC期间,是个Stop The World(STW)过程,系统不对外响应,多CPU、并行处理也不能改变这个事实。请保证你们的GC时间在0.2到0.5s以内,我以前是作WAS的,WAS有专门工具。 如果你们系统持续运行一个月,也用不到600M的heap,那么把heap增加到1000M并不会增加系统性能。要是在WAS下,你把heap最大值和最小值都设成一样,只会导致更多的碎片,更差的性能。当然,sun的默认GC策略是复制+分代策略,所以不会有IBM JVM这样的问题。 http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html http://java.sun.com/docs/hotspot/gc1.4.2/faq.html 不妨看看我这篇没完成的文章:http://zwchen.iteye.com/blog/74737 |
|
返回顶楼 | |
发表时间:2007-05-18
是啊,即使能上4G也不要轻易使用,垃圾收集的暂停会搞得你很痛苦的,除非你的服务对实时性要求不高,偶然暂停一两秒都无所谓。
|
|
返回顶楼 | |
发表时间:2007-05-19
ray_linn 写道 这里有人压根在胡扯. 32bit程序最大内存访问空间是4G, 2的32次方,这是硬件决定的,跟windows linux没有任何关系. Windows2000上不能利用超过4G的内存,一般是2G的内存保留给进程,2G内存保留给核心的。在Windows2000 Advanced Server上可以分配3G给进程,1G留给核心的.
但是对于某些linux和windows,他们的OS进程确实可以访问到4G以上内存, 这是通过一些特殊技术得到的,redhat linux AS 2.1 或者AS3.0下是通过VLM,windows adv. server则是AWE技术. 参数如下: multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server" /3GB /PAE 16GB以上只能选3GB或者PAE一种. 但是对于其他进程来说还是突破不了4G上限,甚至包括oracle也是如此,在oracle中,则是通过将内存当作文件来访问的,虚拟一个 /dev/shm 的文件系统,这个文件系统是完全由内存组成的,这样才突破4g的限制。 /dev/shm默认是系统内存的1/2,最大能到多大,或者说ORACLE目前是多大。 |
|
返回顶楼 | |