JVM内存结构和参数调优笔记

JVM内存结构和JVM调优:
Java内存结构包括了方法区,java虚拟机栈,本地方法栈,堆,程序计算器;
方法区:主要存储class类的加载信息,常亮,静态变量;
Java虚拟机栈:描述了java方法执行的内存模型,每个方法在执行时都会创建一个栈帧,用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
本地方法栈:用于为本地方法提供服务,如调用c方法
Java 堆:用于存储new出来的程序对象
程序计数器:用于保存当前线程执行字节码的行号,当线程切换后,能够恢复到正确的执行位置

线程共享的有:堆,方法区
线程私有的:虚拟机栈,本地栈,程序引用计数器

配置参数:
-Xss 栈的大小
-Xms 堆得最小值
-Xmx 堆得最大值
-Xmn 新生代的大小
-XX:NewSize 新生代最小值
-XX:MaxNewSize 新生代最大值
-XX:+PrintGCDetails 打印GC详情
-XX:+HeapDumpOnOutOfMemoryError 输出dump
-XX: MaxDirectMemorySize 制定直接内存大小+
-XX:NewRatio=2 配置新生代于老年代的比例; = 老年代/新生代,可以设置为4, 3;

方法区:
Jdk1.7以前:-XX:PermSize -XX:MaxPermSize
高版本:-XX:Metaspace XX:MaxMetaspace

堆中分配的两个区域:新生代,老年代区域
新生代可以分为eden区域,刚创建的对象会复制到eden区域,
S0 区域 from
S1 区域 to
老年代用于存储经常被使用的对象

堆内存初始值于最大值一定要配置相等,减少垃圾回收次数。
初始值5M,最大值20M, 垃圾回收机制2次
初始值20M, 最大值20M, 垃圾回收机制1次

新生代与老年代的配置比例:1/4, 1/3;

栈溢出是方法中递归调用可能导致的问题;

**后续补充垃圾回收机制算法。 **

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值