Setting Heap Sizes
If your Java program requires a large amount of memory, it's possible that the virtual machine will begin to throw OutOfMemoryError instances when attempting to instantiate objects. In some cases, this may be the result of a programming error, but in others, it's simply a result of your program legitimately using more memory than is available. In this latter case, you can increase the "heap size" allocated by the Java Virtual Machine (JVM) by using command line options. When not specified, the heap size defaults to 1 MB, and can increase to as much as 16 MB if your program requires more memory. To set the initial amount of memory allocated for your program, use the -ms option with a 1.1 JVM, and the -Xms option with a 1.2 (also known as Java 2) JVM. To set the maximum amount of memory that can be allocated for your program, use the -mx or -Xmx for Java 1.1 or 1.2, respectively. For example:
java -ms32m -mx128m MyClassName (Java 1.1)
java -Xms32m -Xmx128m MyClassName (Java 1.2 / 2.0)
In each case, the options specify that 32 MB of memory should be allocated initially for the program to run in, and that up to 128 MB may be allocated if necessary.
You should note the presence of the "X" on the Java 1.2 / 2.0 options. It indicates that these are non-standard options that might not function the same way or could even be removed in future JVMs. In the meantime, you may find it necessary to take advantage of these options if your program requires a large amount of memory.
分享到:
相关推荐
1. Java 虚拟机 (JVM) 内存过小:JVM 的默认堆大小是 64M,这可能不足以满足应用程序的需求。 2. 程序不严密,产生太多的垃圾:程序中的死循环、无限循环、内存泄露等问题都会导致垃圾的积累,从而导致内存溢出。 ...
- **JVM 默认堆大小**:不同版本的 JVM 默认的堆大小可能有所不同,通常默认最小堆大小为 64MB。 - **监控工具**:利用 JVisualVM 或 Visual GC 等工具监控应用程序的内存使用情况,有助于及时发现潜在的问题。 -...
1. **初始堆大小设置不当**:默认情况下,JVM的初始堆大小可能不足以支持大型应用或高并发场景下的需求。 2. **最大堆大小限制**:如果应用程序的内存需求超过JVM的最大堆大小设置,也会导致heap space问题。 3. **...
二是物理解决,增大物理内存,然后通过调整 JVM 的参数来调整内存的大小。 JVM 内存溢出类型有两种:java.lang.OutOfMemoryError: PermGen space 和 java.lang.OutOfMemoryError: Java heap space。PermGen space ...
1. **堆内存(Heap Memory)**:这是JVM管理的主要内存区域之一,用于存储对象实例以及数组等数据。堆内存又可以细分为新生代(Young Generation)和老年代(Old Generation)。 - **新生代**:新创建的对象首先被...
默认空余堆内存小于 40% 时,JVM 就会增大堆直到-Xmx 的最大限制;空余堆内存大于 70% 时,JVM 会减少堆直到-Xms 的最小限制。 非堆内存分配 JVM 使用-XX:PermSize 设置非堆内存初始值,默认是物理内存的 1/64;由...
在 64 位的操作系统上则没有限制,其大小通过-Xms 和-Xmx 来控制,-Xms 为 JVM 启动时申请的最小 Heap 内存,默认为物理内存的 1/64 但小于 1G,-Xmx 为 JVM 可申请的最大 Heap 内存,默认为物理内存的 1/4。...
JVM会根据需要自动调整堆大小,当空余堆内存低于40%时,它会尝试扩大堆,而当空余堆内存超过70%时,会缩小堆。 - **非堆内存(Non-heap)**:这部分内存主要包含方法区、运行时常量池、JVM内部数据结构以及编译后的...
- **大量数据处理**:程序一次性加载或处理的数据量过大,超过了JVM默认的堆内存大小。 - **配置不当**:Myeclipse中的JVM参数设置不合理,导致分配给程序使用的堆内存不足。 #### 二、解决方案 针对上述问题,...
例如,-XX:HeapDumpPath=./dump.core指定当JVM发生故障时,堆转储文件的保存路径。 3. -XX:<option>=<string>: 设置字符串类型的参数,如-XX:HeapDumpPath选项中的路径就是字符串值。 行为选项: - -XX:-...
- **JVM默认堆内存配置**:JVM默认情况下,最小堆内存为物理内存的1/64,最大堆内存为物理内存的1/4。对于8GB物理内存的机器,这意味着默认的最小堆内存为128MB,最大堆内存为2048MB。 2. **`java.lang....
1. **内存分配不足**:默认情况下,JVM启动时分配的堆内存可能不足以支持应用的需求。 2. **内存泄露**:程序中存在不再使用的对象,但由于某些原因这些对象没有被垃圾回收器回收。 3. **大数据处理**:应用处理的...
Java程序运行时,其内存被划分为几个不同的区域,包括堆内存(Heap)、方法区(Method Area)、栈(Stack)、程序计数器(Program Counter Register)以及本地方法栈(Native Method Stack)。 - **堆内存**:是...
6. -XX:+PrintFlagsFinal:查看所有默认和已设置的JVM参数值,便于了解当前配置。 三、调试技巧 1. 使用-XX:+HeapDumpOnOutOfMemoryError参数,当发生OOM时自动生成堆转储文件,以便分析内存泄漏。 2. 异常日志...
- `-XX:+PrintFlagsFinal`打印所有默认和已设置的JVM选项,`-XX:+PrintGCDetails`和`-XX:+PrintGCDateStamps`用于输出详细的GC日志,便于分析。 10. **内存泄漏检测**: - 使用`-XX:+HeapDumpOnOutOfMemoryError`...
自J2SE 1.4.2版本起,Java虚拟机(JVM)提供了四种垃圾收集器,如果没有特别指定,则串行垃圾收集器(serial garbage collector)作为默认选择。随着J2SE 5.0的发布,垃圾收集器的选择更加智能化,可以根据应用程序启动...
* -Xmn:Java Heap Young 区大小 这些参数的默认值可以根据物理内存大小及计算机内其他内存开销而定。 二、 设置 JVM 内存的方法 1. 在命令提示符下启动并使用 JVM 可以在命令提示符下使用以下命令来设置 JVM ...
默认情况下,当类不再被引用时,JVM会自动进行类卸载。开启此选项后,可以避免因频繁的类加载和卸载导致的性能损耗。 7. **-Xss**:设置每个线程的栈大小。例如,`-Xss256k` 表示每个线程的栈大小为256KB。适当减小...