JVM - 基本调优 (1) - 使用内部设置

堆的结构示意图

首先我们需要对jvm虚拟机的堆 有一定的初步了解

在JDK1.8之前设这样的

JDK1.8之后 永久存储区改为元空间  入门的见解

新生区:

  1. 类: 诞生和成长的地方,甚至死亡;
  2. 伊甸园: 所有的对象都是在伊甸园区new出来的
  3. 幸存者区(0,1)

当伊甸园满了(这里假设十个单位)的时候 就会启动轻度gc处理 假如清理了9个单位,剩下一个就进入幸存区0区,

此时幸存区0区:1

当幸存区0区满了的时候 启动重度fullgc处理,活下来的便进入养老区

永久区:

这个其余常驻内存,用来存放jdk自身携带的CLass对象。Interface元数据,存储的是java运行的一些环境或者类信息,这个区域是不存在垃圾回收的。关闭jvm会释放这个区域的内存

  1. JDK1.6之前:永久代,常量池实在方法区
  2. JDK1.7:永久代,但是慢慢退化了,区永久代,常量池在队中
  3. JDK1.8;无永久代,常量池在元空间

 

关于调优方案1

1 如果栈溢出 (StackOverflowError)我们可以适当调大虚拟机初始化内存和最大内存

2 VM  options设置

-Xms8m -Xms8m -XX:+PrintGCDetails

并且控制台打印一些信息

 

在这里我们可以看到 轻(GC (Allocation Failure))gc回收和重度(Full GC (Allocation Failure) )gc回收

PSYoungGen:新生区

ParOldGen:老年代

 

 

新生区+老年代加起来除以(1024*1024)MB 就是最大内存

它这个输出是字节需要转化为mb单位

关于逻辑上的元空间不存在 但是理论上是存在的 因此算出来其实还是会有一些差异的

有一些人给元空间命名为非堆 其实还是在堆里这些都没有错

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值