一、在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日志解读相关推荐

  1. 72.JVM参数设置(各种jvm参数)、分析;Total Heap;The Young Generation;

    72.JVM参数设置.分析 JVM系列三:JVM参数设置.分析 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于 ...

  2. JVM参数设置、分析

    转载自  JVM参数设置.分析 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方 ...

  3. 浅谈Metaspace内存溢出原因及JVM参数设置

    浅谈Metaspace内存溢出原因及JVM参数设置 1.Metaspace内存溢出(oom) 日志 原因分析 从Java8开始,Java中的内存模型引入了一个称为元空间(Metaspace)的新内存区 ...

  4. Nginx配置中的log_format用法梳理(设置详细的日志格式)

    Nginx配置中的log_format用法梳理(设置详细的日志格式) nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式:另外一条是access_log,用来指定日志 ...

  5. JVM参数设置(Xms Xmx PermSize MaxPermSize )

    转载自https://www.cnblogs.com/happyPawpaw/p/3868363.html Eclipse崩溃,错误提示: MyEclipse has detected that le ...

  6. java:jvm参数设置

    java:jvm参数设置 1 前言 jvm参数设置后,可通过System.getProperties()或者System.getProperty("jdbc.drivers")来获 ...

  7. jvm内存参数配置_“步步精心”-常用JVM配置参数

    本文主要内容: Trace跟踪参数 堆的分配参数 栈的分配参数 零.在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多 ...

  8. jvm性能调优实战 -60 线上系统的JVM参数优化、GC问题定位排查、OOM分析解决

    文章目录 总结 总结 第一个是JVM运行我们写好的系统最根本的工作原理,包括: 内存各个部分的划分 代码在执行的过程中,各个内存区域是如何配合协调工作的 对象是如何分配的 GC如何触发 GC执行的原理 ...

  9. JVM系列三:JVM参数设置、分析

    2019独角兽企业重金招聘Python工程师标准>>> 不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大 ...

最新文章

  1. 《书都不会读,你还想成功》
  2. Maven系列学习(二)Maven使用入门
  3. matlab 工业相机 曝光时间_机器视觉入门——光源相机镜头
  4. 华为交换机的配置及:access、trunk、hybird端口详解
  5. SQL语言基础:SQL中的数据完整性约束用法
  6. 浪潮服务器nf5280m2安装系统,破茧化蝶之作 浪潮NF5280M2服务器评测
  7. java大数据组件HBase
  8. linux 词霸,Linux中的词霸
  9. BI工具那么多 该如何选择
  10. 编译型语言和解释性语言,c++和python
  11. asterisk sip codec协商
  12. 【SVM分类】基于布谷鸟算法优化支持向量机SVM实现数据分类附matlab代码
  13. C++ set自定义排序
  14. php计算macd,macd计算公式?MACD指标的原理是什么
  15. 基于SpringBoot-上传照片保存到本地,且回显照片
  16. 互联网思维心得体会1500字_互联网思维学习心得体会
  17. 内蒙古小学计算机老师招聘试题及答案,2016内蒙古事业单位计算机考试题库:计算机考试练习题(57)...
  18. 还在用百度查找资源?不要落后啦,5款出奇好用的资源网送给你!
  19. 6.论文学习Modality-aware Mutual Learning for Multi-modal Medical Image Segmentation
  20. 形参的种类及其能否改变实参

热门文章

  1. 读取kaf卡数据_墨菊居然能秒开机秒读数据!Lexar雷克沙1667x UHS-II存储卡体验
  2. 计算机系统的主要功能要求,计算机系统的主要功能是什么
  3. SpringBoot继承LogStash实现日志收集
  4. Oracle12c 的安装教程图解(安装系统:windows 2008R2)
  5. Multiresolution Recurrent Neural Networks: An Application to...
  6. 厦华电子:转型迎来新征程 打造大数据领军企业
  7. [LeetCode118]Pascal's Triangle
  8. JavaScript中的函数表达式
  9. 格式化 SQL 来提高效率
  10. Delphi新手必看