JVM运行期间

线程共享 线程私有

线程共享: 方法区 堆
方法区:存放可以共享数据,静态常量,类的共有方法属性字段等,可以共享的存在方法区。

堆:存放class对象 。

线程私有:本地方法栈 虚拟机栈 程序计数器

本地方法栈:存储有关键字native的对象

虚拟机栈:存储引用对象

程序计数器:假如两个线程从0执行到100,先是线程A抢到了cpu资源,他从0执行到了15,cpu重新分配资源,
线程B抢到了从0执行到了10,下一次资源线程A抢到他从15执行到了20。那这个线程是怎么延续上一次的操作继续执行的呢? 这就是用到了程序计数器去计算。

类的加载机制

1.加载:将.class字节码文件加载到内存中,并在堆中生成了一个对象。作为方法区的入口。

2.连接:判断加载的时候有没有出现过异常,类的验证,类的准备,类的解析。

3.初始化/实例化:就是实例化的时候, 创建对象的时候。实例化对象分为:类的主动引用,和类的被动引用。

4.运行:写代码的期间。

5.结束:程序运行结束。

GC垃圾回收机制
01.基本概念
c语言中,垃圾回收是程序员手动控制!
可能会出现的问题:
没有及时清除不用的对象
误操作,清除了系统类。
在java的运行过程中,java虚拟机提供了一个垃圾回收线程。
他负责自动回收程序中不在使用的对象,我们称作垃圾回收机制(Garbage Collection)
02.特点
减轻了程序员的压力
防止误操作导致程序崩溃
只有在一个对象没有引用的时候,才会回收
程序无法控制垃圾回收器进行工作
当GC在回收无用的对象的使用,首先会调用一次finalize()
如果调用成功,则对象不回收,但是,这个方法只有一次机会!
03.对象的状态
可触及状态:对象还有引用
不可触及状态:对象调用finalize(),如果没有还原成可触及状态。
可复活状态:对象没有引用,没有调用finalize()
GC回收的不是对象,而是对象在内存中的空间!!

内存分配区域
分代分配,分代回收

01.新生代
新生代分为两部分 绝大部分放进eden区 eden占20%
在eden区满的时候,会把区里的对象放到survivor区 survivor区占80% survivor区分为两个区域一个survivor0区,一个survivor1区。
这两个区必须有一个是空的, 加入survivor0区满了会把对象转移到survivor1区中,把死亡的对象清除。survivor1区满了转移到survivor0区。
当一个对象在新生代区域存活已久,并且没有清空,则会被放到老年代中。
02.老生代
内存空间远远大于新生代!
如果创建的对象eden区放不下,会直接放进老年代!
在老年代执行GC我们称为 Full GC(Major GC)
当老年代内存快满的时候,执行Full GC
03.永久代
所有类的实例对象(class对象的引用)已经被回收
加载类的classloader已经回收了

JVM和GC垃圾回收机制和内存分配的更多相关文章

  1. Java垃圾回收机制和内存分配

    收集算法是内存回收的方法论,垃圾收集器是内存回收的具体实现 自动内存管理解决的是:给对象分配内存 以及 回收分配给对象的内存 为什么我们要了解学习 GC 与内存分配呢? 在 JVM 自动内存管理机制的 ...

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

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

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

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

  4. Chrome V8系列--浅析Chrome V8引擎中的垃圾回收机制和内存泄露优化策略

    V8 实现了准确式 GC,GC 算法采用了分代式垃圾回收机制.因此,V8 将内存(堆)分为新生代和老生代两部分. 一.前言 V8的垃圾回收机制:JavaScript使用垃圾回收机制来自动管理内存.垃圾 ...

  5. 面试官,不要再问我“Java GC垃圾回收机制”了

    Java GC垃圾回收几乎是面试必问的JVM问题之一,本篇文章带领大家了解Java GC的底层原理,图文并茂,突破学习及面试瓶颈. 楔子-JVM内存结构补充 在上篇<JVM之内存结构详解> ...

  6. GC垃圾回收机制详解

    JVM堆相关知识    为什么先说JVM堆?  JVM的堆是Java对象的活动空间,程序中的类的对象从中分配空间,其存储着正在运行着的应用程序用到的所有对象.这些对象的建立方式就是那些new一类的操作 ...

  7. JS基础-垃圾回收机制与内存泄漏的优化

    [V8引擎]浅析Chrome V8引擎中的垃圾回收机制和内存泄露优化策略 垃圾回收机制 如何判断回收内容 如何确定哪些内存需要回收,哪些内存不需要回收,这是垃圾回收期需要解决的最基本问题.我们可以这样 ...

  8. 乐字节Java|GC垃圾回收机制、package和import

    本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...

  9. 通俗易懂.NET GC垃圾回收机制(适用于小白面试,大牛勿喷)

    情景:你接到xx公司面试邀请,你怀着激动忐忑的心坐在对方公司会议室,想着等会的技术面试.技术总监此时走来,与你简单交谈后.... 技术:你对GC垃圾回收机制了解的怎么样? 你:还行,有简单了解过. 技 ...

随机推荐

  1. nuget安装本地nupkg文件

    打开visual studio,菜单选择‘工具’->‘选项’ 然后 接下来,选择‘程序包源’,把‘包括预发行版’打钩,然后安装需要的包到工程即可,如下图:

  2. java之数据库相关

    这篇还是在回顾知识.主要是关于java连接Sqlserver2012数据库的一些方式记录,以便以后查询. 十一之内复习完这些知识就可以新学Hibernate啦(*^▽^*) 1.普通方式 注意,在连接 ...

  3. python基础 (序列化,os,sys,random,hashlib)

    1.序列化 定义: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然 ...

  4. 网址导航18A

    [导航] hao268 百度导航 泡泡导航 35Q网址导航 [名站] 百度 网易 腾讯 新华 中新 凤凰 [邮箱] 163邮箱 126邮箱 Yeah邮箱 QQ邮箱 阿里邮箱 189邮箱 [新闻] 联合 ...

  5. jquery瀑布流排列样式代码

    <!DOCTYPE html><html><head lang="en"> <meta charset="gb2312" ...

  6. Job集群设计

  7. springCloud笔记

    分布式和集群的理解:比如在一个厨房有两个厨师,一个炒菜,一个洗菜,各自做不同的事情,但是却在合作,这种叫做分布式,两个都在炒菜或者都在做菜,就叫做集群. eureka的是springCloud的注册中 ...

  8. thymelead入门 git地址在文档最后

    流程:##### 流程###### 1:pom添加依赖 <dependency> <groupId>org.springframework.boot</groupId&g ...

  9. JavaScript变量声明var,let.const

    var声明变量的作用域限制在其声明位置的上下文中 var x = 0; // x是全局变量,并且赋值为0. console.log(typeof z); // undefined,因为z还不存在. f ...

  10. 关于canvas补充说明

    上篇文章提到的canvas画布,用到f2组件,组件地址https://gw.alipayobjects.com/os/antv/assets/f2/3.0.0/f2.js或利用npm下载:npm in ...