JVM学习02:GC垃圾回收和内存分配

写在前面:本系列分享主要参考资料是  周志明老师的《深入理解Java虚拟机》第二版。

GC垃圾回收和内存分配知识要点Xmind梳理

案例分析1-(GC日志分析示例)

package com.hs.jvm;

import java.sql.Time;
import java.sql.Timestamp;
import java.text.SimpleDateFormat; public class Test { public Object instance = null;
private static final int _1MB = 1024 * 1024; //该成员属性存在的唯一目的就是占内存;
private byte[] bigSize = new byte[2* _1MB]; public static void main(String[] args){ Test objA = new Test();
Test objB = new Test(); objA.instance = objB;
objB.instance = objA; objA = null;
objB = null; System.gc(); } /*
[GC (System.gc()) [PSYoungGen: 9350K->4923K(76288K)] 9350K->4931K(251392K), 0.0047877 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[Full GC (System.gc()) [PSYoungGen: 4923K->0K(76288K)] [ParOldGen: 8K->4808K(175104K)] 4931K->4808K(251392K), [Metaspace: 3281K->3281K(1056768K)], 0.0113745 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] Heap
PSYoungGen total 76288K, used 655K [0x000000076ad80000, 0x0000000770280000, 0x00000007c0000000)
eden space 65536K, 1% used [0x000000076ad80000,0x000000076ae23ee8,0x000000076ed80000)
from space 10752K, 0% used [0x000000076ed80000,0x000000076ed80000,0x000000076f800000)
to space 10752K, 0% used [0x000000076f800000,0x000000076f800000,0x0000000770280000)
ParOldGen total 175104K, used 4808K [0x00000006c0800000, 0x00000006cb300000, 0x000000076ad80000)
object space 175104K, 2% used [0x00000006c0800000,0x00000006c0cb23c0,0x00000006cb300000)
Metaspace used 3288K, capacity 4496K, committed 4864K, reserved 1056768K
class space used 359K, capacity 388K, committed 512K, reserved 1048576K
*/ /**
* GC :表示日志开始,如果是Full GC,表示发生了"stop the world"
* System.gc(): 表示是通过System.gc()方法触发GC
* PSYoungGen : 表示GC发生的区域,且区域名称和使用的GC收集器有关,比如PSYoungGen表示新生代(使用Parallel Scavenge收集器),DefNew表示新生代(使用Serial收集器)
* 9350K->4923K(76288K):GC前该内存区域使用容量->GC后该内存区域已使用容量(该内存区域总容量)
* 0.0047877 secs:表示该内存区域GC所占用的时间(单位秒)
* [Times: user=0.00 sys=0.00, real=0.01 secs]:user、sys、real代表用户态小号的CPU时间、内核态消耗的CPU时间和操作从开始到结束所经过的墙钟时间
* */ }

JVM学习02:GC垃圾回收和内存分配的更多相关文章

  1. JVM学习第二天(垃圾回收器和内存分配策略)大章

    说道垃圾回收器大家应该都会有所了解,GC白,当然说道具体的可能就不是很清楚了,今天我们就来玩一玩; GC要做的事情: 第一步:确定堆中需要回收的对象; 第二步:什么时候回收; 第三步:怎样回收 为什么 ...

  2. Java GC 垃圾回收算法 内存分配

    垃圾回收(Garbage Collection, GC)是Java不同于c与c++的重要特性之一. 他帮助Java自动清空堆中不再使用的对象. 由于不需要手动释放内存,程序员在编程中也可以减少犯错的机 ...

  3. jvm虚拟机笔记<二> 垃圾回收与内存分配

    确定对象已废弃需要两步: 利用可达性分析算法(与GC roots有关联——虚拟机栈中的对象,方法区静态对象,方法区常量对象,本地方法引用的对象)判断是否需要回收. 是否覆盖过finalize方法并执行 ...

  4. JVM架构和GC垃圾回收机制

    深入理解系列之JDK8下JVM虚拟机(1)——JVM内存组成 https://blog.csdn.net/u011552404/article/details/80306316 JVM架构和GC垃圾回 ...

  5. java面试题之----JVM架构和GC垃圾回收机制详解

    JVM架构和GC垃圾回收机制详解 jvm,jre,jdk三者之间的关系 JRE (Java Run Environment):JRE包含了java底层的类库,该类库是由c/c++编写实现的 JDK ( ...

  6. JVM专题3: GC 垃圾回收

    合集目录 JVM专题3: GC 垃圾回收 什么是GC? 为什么要有 GC? Garbage Collection, 用于内存回收. 简述一下 Java 垃圾回收机制? 那些内存需要回收 虚拟机中程序计 ...

  7. 【java虚拟机序列】java中的垃圾回收与内存分配策略

    在[java虚拟机系列]java虚拟机系列之JVM总述中我们已经详细讲解过java中的内存模型,了解了关于JVM中内存管理的基本知识,接下来本博客将带领大家了解java中的垃圾回收与内存分配策略. 垃 ...

  8. NET的堆和栈04,对托管和非托管资源的垃圾回收以及内存分配

    在" .NET的堆和栈01,基本概念.值类型内存分配"中,了解了"堆"和"栈"的基本概念,以及值类型的内存分配.我们知道:当执行一个方法的时 ...

  9. JVM虚拟机 与 GC 垃圾回收

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.JVM体系结构概述 1.JVM 与系统.硬件 ​ JVM是运行在操作系统之上的,它与硬件没有直接的交 ...

随机推荐

  1. 搭建zookeeper+kafka集群

      搭建zookeeper+kafka集群 一.环境及准备 集群环境:   软件版本: 部署前操作: 关闭防火墙,关闭selinux(生产环境按需关闭或打开) 同步服务器时间,选择公网ntpd服务器或 ...

  2. solr参数之facet

    facet就像sql语句中的group一样,是对某一个字段进行group并count,即能够按照Facet的字段进行分组并统计. 一.基本使用: 必须属性:facet=true&facet.f ...

  3. js异步处理历程

    为什么会出现异步: js执行环境是单线程的,异步处理就非常重要. 处理的方法: 方法一:callback hell 解决:解决了异步处理 存在问题:出现多个回调函数嵌套,代码就会比较乱,出现回调地狱现 ...

  4. mac环境破解navicat premium 12.1

    1. 下载破解工具 https://github.com/DoubleLabyrinth/navicat-keygen/tree/mac 其中,navicat-keygen为破解器:navicat-p ...

  5. LeetCode 92. Reverse Linked List II倒置链表2 C++

    Reverse a linked list from position m to n. Do it in one-pass. Note: 1 ≤ m ≤ n ≤ length of list. Exa ...

  6. 再见:org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer

    这个问题我之前遇见多次了,今天又遇见了 2019-03-22 16:33:27.555 WebMvcConfigurer.java:144 ERROR - 接口 [/appservice/7za.ex ...

  7. 大量Python开源第三方库资源分类整理,含菜鸟教程章节级别链接

    Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明.因其具有丰富和强大的库,它常被称为胶水语言,能够把用其它语言制作的各种模块(尤其是C/C ...

  8. 李清华 201772020113《面向对象程序设计(java)》第十四周学习总结

    1.实验目的与要求 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及常用API: 2.实验内容和步骤 实验1: 导入第12章示例程序,测试程序并进行组内讨论. 测试程 ...

  9. 关于新学期Python的一点见解

    首先很高兴选到了Python,之前学习过c语言,不过学的不大好. 我希望此次课程能够教会我们如何运用Python解决生活中的一些小问题,或者可以解决其他学科上的一些问题,当然有关人工智能方面的最好. ...

  10. SpringCloud系列八:Zuul 路由访问(Zuul 的基本使用、Zuul 路由功能、zuul 过滤访问、Zuul 服务降级)

    1.概念:Zuul 路由访问 2.具体内容 在现在为止所有的微服务都是通过 Eureka 找到的,但是在很多的开发之中为了规范微服务的使用,提供有一个路由的处理控制组件:Zuul,也就是说 Zuul ...