java8 gc配置_基于JDK8的JVM参数设置和GC日志解读
一、在IDEA中设置程序的运行参数
Run -> Edit Configuration
-XX:+PrintGCDetails
-Xms30M
-Xmx30M
-Xmn10M
-XX:SurvivorRatio=8
参数含义分别是:
打印GC日志
最小堆内存
最大堆内存
堆中新生代内存
新生代内存中Eden和Survivor大小之比,如果为8表示Eden占80%,另外两个Survivor各占10%
二、运行程序
package memory.gc;
/**
* Created by Administrator on 2018-04-11.
*/
public class GCLogTest {
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().maxMemory());
System.out.println(Runtime.getRuntime().totalMemory());
Object obj = new Object();
obj = null;
System.gc();
}
}
程序通过System.gc()使JVM进行了一次Full GC
看到输出的日志如下
30408704
30408704
[Full GC (System.gc()) [TenuredDisconnected from the target VM, address: '127.0.0.1:55874', transport: 'socket'
: 0K->528K(20480K), 0.0029772 secs] 1315K->528K(29696K), [Metaspace: 1840K->1840K(4480K)], 0.0030434 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
Heap
def new generation total 9216K, used 82K [0x03800000, 0x04200000, 0x04200000)
eden space 8192K, 1% used [0x03800000, 0x03814928, 0x04000000)
from space 1024K, 0% used [0x04000000, 0x04000000, 0x04100000)
to space 1024K, 0% used [0x04100000, 0x04100000, 0x04200000)
tenured generation total 20480K, used 528K [0x04200000, 0x05600000, 0x05600000)
the space 20480K, 2% used [0x04200000, 0x04284308, 0x04284400, 0x05600000)
Metaspace used 1845K, capacity 2242K, committed 2368K, reserved 4480K
[Full GC : 这是Full GC的标识。
先忽略上面中括号[Full GC ….. ]之间的信息(里面有回收时间sec、回收前->回收后大小),
直接看Heap下面的输出日志:
def new generation total 9216k 说明新生代垃圾回收内存区域总大小为9216k。
这个大小是怎么算出来的呢?
它是:eden space 加上一个 survivor space (也就是from space)的大小,另外一个survivor space (也就是to space)是用来通过复制算法存放存活对象的,不在回收区域之内,所以def new generation total 没有算上它。
对应新生代内存Xmn的大小正好是10M。其中eden space和survivor space(from space 和 to space任意一个)之比8:1。
tenured generation表示老年代内存,20M,加上新生代内存10M,正好30M。
元空间(metaspace)
持久代的空间在JDK8中被彻底地删除后(JDK7没有彻底删除),它被一个叫元空间的区域所替代了。
这样JVM会忽略PermSize和MaxPermSize这两个参数(经过试验,确实如此),还有就是再也看不到java.lang.OutOfMemoryError: PermGen error的异常了。
JDK 8的HotSpot JVM现在使用的是本地内存来表示类的元数据,这个区域就叫做元空间。
java8 gc配置_基于JDK8的JVM参数设置和GC日志解读相关推荐
- 72.JVM参数设置(各种jvm参数)、分析;Total Heap;The Young Generation;
72.JVM参数设置.分析 JVM系列三:JVM参数设置.分析 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于 ...
- JVM参数设置、分析
转载自 JVM参数设置.分析 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方 ...
- 浅谈Metaspace内存溢出原因及JVM参数设置
浅谈Metaspace内存溢出原因及JVM参数设置 1.Metaspace内存溢出(oom) 日志 原因分析 从Java8开始,Java中的内存模型引入了一个称为元空间(Metaspace)的新内存区 ...
- Nginx配置中的log_format用法梳理(设置详细的日志格式)
Nginx配置中的log_format用法梳理(设置详细的日志格式) nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式:另外一条是access_log,用来指定日志 ...
- JVM参数设置(Xms Xmx PermSize MaxPermSize )
转载自https://www.cnblogs.com/happyPawpaw/p/3868363.html Eclipse崩溃,错误提示: MyEclipse has detected that le ...
- java:jvm参数设置
java:jvm参数设置 1 前言 jvm参数设置后,可通过System.getProperties()或者System.getProperty("jdbc.drivers")来获 ...
- jvm内存参数配置_“步步精心”-常用JVM配置参数
本文主要内容: Trace跟踪参数 堆的分配参数 栈的分配参数 零.在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多 ...
- jvm性能调优实战 -60 线上系统的JVM参数优化、GC问题定位排查、OOM分析解决
文章目录 总结 总结 第一个是JVM运行我们写好的系统最根本的工作原理,包括: 内存各个部分的划分 代码在执行的过程中,各个内存区域是如何配合协调工作的 对象是如何分配的 GC如何触发 GC执行的原理 ...
- JVM系列三:JVM参数设置、分析
2019独角兽企业重金招聘Python工程师标准>>> 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大 ...
最新文章
- 《书都不会读,你还想成功》
- Maven系列学习(二)Maven使用入门
- matlab 工业相机 曝光时间_机器视觉入门——光源相机镜头
- 华为交换机的配置及:access、trunk、hybird端口详解
- SQL语言基础:SQL中的数据完整性约束用法
- 浪潮服务器nf5280m2安装系统,破茧化蝶之作 浪潮NF5280M2服务器评测
- java大数据组件HBase
- linux 词霸,Linux中的词霸
- BI工具那么多 该如何选择
- 编译型语言和解释性语言,c++和python
- asterisk sip codec协商
- 【SVM分类】基于布谷鸟算法优化支持向量机SVM实现数据分类附matlab代码
- C++ set自定义排序
- php计算macd,macd计算公式?MACD指标的原理是什么
- 基于SpringBoot-上传照片保存到本地,且回显照片
- 互联网思维心得体会1500字_互联网思维学习心得体会
- 内蒙古小学计算机老师招聘试题及答案,2016内蒙古事业单位计算机考试题库:计算机考试练习题(57)...
- 还在用百度查找资源?不要落后啦,5款出奇好用的资源网送给你!
- 6.论文学习Modality-aware Mutual Learning for Multi-modal Medical Image Segmentation
- 形参的种类及其能否改变实参
热门文章
- 读取kaf卡数据_墨菊居然能秒开机秒读数据!Lexar雷克沙1667x UHS-II存储卡体验
- 计算机系统的主要功能要求,计算机系统的主要功能是什么
- SpringBoot继承LogStash实现日志收集
- Oracle12c 的安装教程图解(安装系统:windows 2008R2)
- Multiresolution Recurrent Neural Networks: An Application to...
- 厦华电子:转型迎来新征程 打造大数据领军企业
- [LeetCode118]Pascal's Triangle
- JavaScript中的函数表达式
- 格式化 SQL 来提高效率
- Delphi新手必看