# Java 增加内存 > 原文: [https://javatutorial.net/java-increase-memory](https://javatutorial.net/java-increase-memory) Java 内存模型指定 [Java 虚拟机](https://javatutorial.net/jvm-explained)如何与计算机的内存(RAM)配合使用。 在本教程中,我将向您展示如何配置 Java 使用的内存。 ## Java 内存模型 [JVM](https://javatutorial.net/jvm-explained) 内部使用的 Java 内存模型在线程栈和堆之间分配内存。 JVM 中运行的每个线程都有自己的线程栈。 **线程栈**包含有关线程调用了哪些方法以达到当前执行点的信息。 它还包含每个正在执行的方法的所有局部变量。 ![java memmory model](img/1d4849ebded3229c72686e16ad468998.jpg) 基本类型的所有局部变量(`boolean`,`byte`,`short`,`char`,`int`,`long`,`float`,`double`)都完全存储在线程栈中,因此没有 对其他线程可见。 **堆**包含 Java 应用程序中创建的所有对象,而不管创建该对象的线程如何。 这包括原始类型的对象版本(例如`Byte`,`Integer`,`Long`等)。 ## 增加堆大小 默认情况下,JVM 使用的最大内存小于物理内存的 1/4。 您可以通过执行以下 Java 代码来检查最大内存: ```java long maxBytes = Runtime.getRuntime().maxMemory(); System.out.println("Max memory: " + maxBytes / 1024 / 1024 + " MB"); ``` 您可以通过设置初始和最大堆大小来配置 Java 程序的内存使用量,如下所示: ```java java -Xms -Xmx ``` 例如: ```java java -Xms500m -Xmx6g myprogram ``` 会将初始堆大小设置为 500 MB,将最大堆大小设置为 6 GB。 ## 增加栈大小 在 Windows 上,默认线程栈大小是从二进制文件(`java.exe`)中读取的。 从 Java SE 6 开始,此值在 32 位 VM 中为 320k,在 64 位 VM 中为 1024k。 在 x86 Solaris/Linux 上,在 32 位 VM 中为 320k,在 64 位 VM 中为 1024k。 您可以使用`–Xss`自变量来增加栈大小。 例如: ```java java -Xss4m myprogram ``` 将栈大小设置为 4 MB。