在命令行下用 java -XmxXXXXM -version 命令来进行测试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息。
试了一下,在XP pro环境下,最大可以使用14XXM的内存。
转一段论坛的帖子:
"我建议你做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"
讨论JVM最大可使用多少内存的帖子在:http://www.iteye.com/topic/80257?page=1
分享到:
相关推荐
JVM 内存溢出是指程序运行所需的内存大于虚拟机能提供的最大内存的情况。这种情况可能是由于数据量过大、死循环、静态变量和静态方法过多、递归、无法确定是否被引用的对象等原因引起的。同时,虚拟机不回收内存...
- `Runtime.getRuntime().maxMemory()`:返回JVM的最大可用内存,对应-Xmx参数的设置。 - `Runtime.getRuntime().freeMemory()`:返回当前JVM未被使用的空闲内存。 - `Runtime.getRuntime().totalMemory()`:返回...
- `freeMemory()`:返回JVM堆内存中未被使用的部分,即剩余可用内存。 示例代码如下: ```java long heapSize = Runtime.getRuntime().totalMemory(); long heapMaxSize = Runtime.getRuntime().maxMemory(); long...
- **JVM默认堆内存配置**:JVM默认情况下,最小堆内存为物理内存的1/64,最大堆内存为物理内存的1/4。对于8GB物理内存的机器,这意味着默认的最小堆内存为128MB,最大堆内存为2048MB。 2. **`java.lang....
最后,测试JVM可用最大内存是一个重要的步骤,可以通过`java -XmxXXXXM -version`命令逐步增大内存值来确定。在Windows 32位系统中,最大值通常限制在1280M左右,但实际使用时应根据应用需求和系统资源进行适当调整...
在特定环境下,例如文中提到的Windows Server 2003系统,具有3.5GB物理内存且使用JDK5.0的情况下,JVM的最大堆内存设置可达1478MB。 ##### 2. 典型设置 在进行JVM的内存设置时,有几个关键参数需要特别注意: - *...
内存溢出,也称为“Out of Memory”错误,通常是由于程序请求的内存超过了系统或JVM分配的可用内存。在搜索引擎创建索引时,这可能是由于以下原因造成的: 1. **大量数据处理**:搜索引擎需要对网页内容进行分析、...
这种问题通常发生在程序尝试分配超出系统可用内存限制的新对象时。了解JVM内存结构是理解内存溢出的关键。 #### 二、JVM运行时数据区域 - **程序计数器(Program Counter Register)**:当前线程所执行的字节码的...
这是JVM可以使用的最大堆内存限制。 - **-XX:PermSize=64M**:设置初始的永久代(Permanent Generation)大小为64MB。对于Java 8及更早版本,这是非堆内存的一部分,用于存储类元数据等。 - **-XX:MaxPermSize=128...
- 当`-Xmx`和`-XX:MaxPermSize`设置过大,超过JVM能分配的最大内存或系统允许的最大内存时,Eclipse可能无法启动。这是因为JVM内存分配受限于物理内存和操作系统的内存限制。 - 如果`-Xms`设置大于`-Xmx`,或者`-...
在 Windows 下,可以在文件 /bin/catalina.bat 中增加如下设置:JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'。例如:JAVA_OPTS='-Xms256m -Xmx512m',表示初始化内存为 256MB,可以使用的最大...
1. **堆内存设置参数**:包括Xmx(堆最大可用内存,默认是本地机器物理内存的1/4)、Xms(堆初始内存,默认是本地机器物理内存的1/64)。 2. **新生代(Young)设置**:Xmn(堆Young代大小,增大新生代会减少老年代...
3. 在 Jvm 中 32 位的内存地址最大只支持 4g 内存,可以通过对指针存入堆内存时压缩编码、取出到 CPU 寄存器后编码方式进行优化,使得 Jvm 只用 32 位的地址就可以支持更大的内存配置大小等于 32g。 对齐填充: ...
对于HotSpot虚拟机而言,这部分区域被称为“永久代”(PermGen space),而在JVM 8之后,已经被“元空间”(Metaspace)所替代,其物理内存空间不再受堆大小限制,而是由系统的实际可用内存决定。 #### 2. 堆 堆是...
JVM 的最大堆大小受到三个方面的限制:操作系统的数据模型限制、系统的可用虚拟内存限制和系统的可用物理内存限制。在 32 位系统下,一般限制在 1.5G~2G,而 64 位操作系统对内存无限制。 -Xmx 设置 JVM 的最大...
对于32位系统,JVM可以使用的最大内存通常受到操作系统的限制,一般在1.5GB到3GB之间,而64位系统则没有这个限制。实际可用内存还会受到系统其他进程和硬件占用的影响。 5. **优化建议**: - 根据应用的需求和...
当这两个区域的可用内存不足以支撑当前的应用负载时,就会发生内存溢出错误。 #### 二、PermGen 空间溢出详解 ##### 2.1 PermGen 概念解析 PermGen 全称为 Permanent Generation space,是 JVM 的一部分,用于存储...
* -Xmx3550m:设置JVM最大可用内存为3550M。 * -Xms3550m:设置JVM初始内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 * -Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小+...
本地内存的最大大小受到操作系统进程内存大小限制的影响。 #### 三、GC次数过多消耗时间过长的原因和症状 当垃圾回收(GC)操作过于频繁或耗时较长时,可能会导致应用程序性能下降。常见的原因包括: - **堆内存...