Java增加内存

时间:2020-02-23 14:37:10  来源:igfitidea点击:

Java内存模型指定Java虚拟机如何使用计算机内存(内存)工作。在本教程中,将介绍如何配置Java使用的内存。

Java内存模型

JVM内部使用的Java内存模型将内存分为线程堆栈和堆,每个运行在JVM中的线程都有自己的线程堆栈, 线程堆栈包含线程调用了哪些方法来到达当前执行点的信息。它还包含每个正在执行的方法的所有局部变量。

基本类型的所有局部变量(

boolean

,

byte

,

short

,

char

,

int

,

long

,

float

,

double

)完全存储在线程堆栈上,因此对其他线程不可见。

包含Java应用程序中创建的所有对象,而不管是哪个线程创建的对象。这包括原语类型的对象版本(例如。

Byte

,

Integer

,

Long

等等)。

增加堆大小

默认情况下,JVM使用的最大内存小于物理内存的1/4. 我们可以通过执行以下java代码来检查最大内存:

long maxBytes = Runtime.getRuntime().maxMemory();
System.out.println("Max memory: " + maxBytes/1024/1024 + " MB");

通过设置初始堆大小和最大堆大小,可以配置java程序的内存使用情况,如下所示:

java

-Xms

<initial heap size>

-Xmx

<maximum heap size>

例如:

java -Xms500m -Xmx6g myprogram

将初始堆大小设置为500 MB,最大堆大小设置为6 GB。

增加堆栈大小

在Windows上,默认的线程堆栈大小是从二进制文件中读取的(java.exe). 从Java SE 6开始,这个值在32位虚拟机中为320k,在64位虚拟机中为1024k。在x86 Solaris/Linux上,在32位虚拟机中为320k,在64位虚拟机中为1024k。

我们可以使用 Xss参数增加堆栈大小。

例如:

java -Xss4m myprogram

将堆栈大小设置为4 MB。