JVM内存模型及常用内存设置

JVM的内存模型

JVM(Java Virtual Machine)内存分为几大区域,包括程序计数器、堆、栈、方法区,其实内存模型和C++很类似。其中:

  • 程序计数器:
    • 记录当前执行指令的地址,对于if、for、递归、函数调用等,修改该计算器的值即可,该计数器有程序修改
    • 堆内存是通过new创建的对象,在JAVA中,用new创建的对象都是在堆创建的(基础类型除外),在C++中,使用new创建的对象也是在堆存储的
    • 栈是形参、局部变量、递归的压栈都是存储在栈中的
  • 方法区
    • 方法区是存储方法和常量的,常量信息会存储在方法区,方法本身的一些信息也是存储在方法区

设置JVM内存的参数

-XX:PermSize=10M -XX:MaxPermSize=20M -Xmx100m -Xms20m -Xss20m

其中:

  • -XX:PermSize是设置方法区默认为10M
  • -XX:MaxPermSize是设置方法去最大内存为20M
  • -Xmx是设置最大堆内存为100M
  • -Xms是设置最小堆内存是20m
  • -Xss是设置栈的内存为20m

这里我们可以将对应的参数换成k、m、g,单位不区分大小写,这里的内存限制受限于物理内存,如果我们发现内存溢出错误,可能 根据提示查找错误的原因,我们可以增大内存或者查询错误代码来解决该问题

posted @ 2019-03-07 17:08  shenjie2017  阅读(135)  评论(0编辑  收藏  举报