深入理解jvm虚拟机分享

1、 jvm执行流程

java-编译-.class—类加载器(随时随地加载)--【进入java虚拟机】

执行引擎—本地方法接口---本地方法库

运行时数据区

2、 运行时数据区

1) 程序计数器:记录程序执行位置,线程安全,计数器互不影响

2) 栈:创建一个线程,就会创建一个栈,执行一个方法就会创建一个栈帧,线程不共享 StackOverFlow

递归调用有内存泄漏风险

3) 堆:最大一块,java线程共享,存储对象地方,GC管理的主要区域,还分为新生代和老年代

4) 方法区:要加载类的信息(名称、修饰符等)、类中的静态变量,类中定义为final类型的变量、勒种Filekd信息、类中的方法信息。是被java线程锁共享的,不会频繁被GC回收,超过内存大小会抛出OutOfMemeory错误

5) 本地方法区 Native方法服务

3、 Java对象访问模式

1)、什么类型产生垃圾

引用类型

堆内存  栈内存  方法去

2)Object obj = 描述的是保存在栈内存中,而保存堆内存的引用,数据保存在本地变量表

new Object() 一个真正的对象,保存在堆内存中

4、 通过句柄访问

本地变量表—句柄池—对象实例数据指针+对象类型数据指针-à找到对应的对象实例和对象类型

5、 通过直接指针访问---hotSpot虚拟机

本地方法表---对象+数据---对象类型

2006年开源,sun改良

6、 三种JVM

JVM中不在保存句柄

Sun 改良了hotSpot

BEA 的JRockit

IBM JVMs

7、 JVM垃圾回收

对不需要的对象进行标记,而后进行清除

JVM堆内存

1.8后 使用了元空间,去除了永久带

为什么取消永久带

为了将hotSpot与JRockit两个虚拟机标准联合为一个

8、堆内存分为三块

新生代:新对象和没达到一定年龄年轻代

老年代:对象被长时间使用的对象。老年代空间要比年轻代大

元空间:像一些方法中的操作的临时变量,对象等,是物理内存使用

每个代都有伸缩区,可以调配

8、 年轻代GC实现算法:复制算法

算法:复制采用的方式为从根集合扫描出存货的对象

jvm虚拟机分享课笔记的更多相关文章

  1. 《深入理解JVM虚拟机》读书笔记

    前言:<深入理解JVM虚拟机>是JAVA的经典著作之一,因为内容更偏向底层,所以之前一直没有好好的阅读过.最近因为刚好有空,又有了新目标.所以打算和<构架师的12项修炼>一起看 ...

  2. visualvm工具远程对linux服务器上的JVM虚拟机进行监控与调优

    文/朱季谦 最近在做了一些JVM监控与调优的事情,算是第一次实践,还比较陌生,故而先把这一次经验简单记下笔记,这样,对后面学习调优方面时,不至于又想不起来了.本文档主要总结在window本地环境远程对 ...

  3. 清华大学ucore操作系统课笔记

    操作系统 清华大学ucore操作系统课笔记 全文思维导图 1. 操作系统概述 1.1 什么是操作系统? 操作系统的定义 没有公认的精确定义 一个控制程序 一个系统软件 控制程序执行过程,防止错误和计算 ...

  4. 设置TOMCAT的JVM虚拟机内存大小

    你知道如何设置TOMCAT的JVM虚拟机内存大小吗,这里和大家分享一下,JAVA程序启动时JVM都会分配一个初始内存和最大内存给这个应用程序.这个初始内存和最大内存在一定程度都会影响程序的性能. 设置 ...

  5. 《深入java虚拟机》读书笔记之垃圾收集器与内存分配策略

    前言 该读书笔记用于记录在学习<深入理解Java虚拟机--JVM高级特性与最佳实践>一书中的一些重要知识点,对其中的部分内容进行归纳,或者是对其中不明白的地方做一些注释.主要是方便之后进行 ...

  6. JVM虚拟机深入理解+GC回收+类加载

    旭日Follow_24 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/xuri24/article/details/81455449 一,前言 本文章是读了“深入理 ...

  7. 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势

    0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...

  8. Java之JVM监控工具分享

    Java之JVM监控工具分享 JVM的基本知识常用的也就是类加载机制,内存区域.分配.OOM,GC,JVM参数调优 几个链接自己看: 内存区域&类加载机制 分配策略&垃圾回收算法.收集 ...

  9. JVM 虚拟机内存深入探究

    [<深入理解java虚拟机>-整理笔记] by  lijun JVM虚拟机内存逻辑模型: 方法区(全局变量 静态数据 常量等) 线程共享 堆栈区(对象实例 数组数据 new generat ...

随机推荐

  1. T-SQL:排除阻塞(十六)

    当一个事务持有事务的资源锁,并且另一个事务请求同一资源的不兼容锁时,请求被阻塞并且请求者进入等待状态,直到锁定者释放干扰锁. 长时间运行事务会导致锁被长时间持有,所以只对要开启事务的表操作代码开启事务 ...

  2. Hibernate session中的createCriteria方法

    在应用中获取session对象: Session session=  HibernateUtil.getSession(); List list=session.createCriteria(Mete ...

  3. 8.并发容器ConcurrentHashMap#put方法解析

    jdk1.7.0_79 HashMap可以说是每个Java程序员用的最多的数据结构之一了,无处不见它的身影.关于HashMap,通常也能说出它不是线程安全的.这篇文章要提到的是在多线程并发环境下的Ha ...

  4. 性能监控(6)–JAVA下的jinfo命令

    jinfo可以用来查看正在运行的java应用程序的扩展参数,设置支持在运行时,修改部分参数. Jinfo的语法为: Usage: jinfo [option] <pid> (to conn ...

  5. 贝尔数(来自维基百科)& Stirling数

    贝尔数   贝尔数以埃里克·坦普尔·贝尔(Eric Temple Bell)为名,是组合数学中的一组整数数列,开首是(OEIS的A000110数列):   Bell Number Bn是基数为n的集合 ...

  6. Linux  改动inittab文件及忘记密码等导致无法进入系统的解决办法

    改动inittab文件及忘记密码等导致无法进入系统的解决办法[摘] by:授客 QQ:1033553122 inittab是linux的系统启动模式配置文件,在”/etc“文件目录下没,其内容是: # ...

  7. Flutter 布局(八)- Stack、IndexedStack、GridView详解

    本文主要介绍Flutter布局中的Stack.IndexedStack.GridView控件,详细介绍了其布局行为以及使用场景,并对源码进行了分析. 1. Stack A widget that po ...

  8. Android EditText自定义样式

    第一步:为了更好的比较,准备两个一模一样的EditText(当Activity启动时,焦点会在第一个EditText上,如果你不希望这样只需要写一个高度和宽带为0的EditText即可避免,这里就不这 ...

  9. 数据库的IO and 数据库优化问题

    一.IO介绍 IO有四种类型:连续读,随机读,随机写和连续写,连续读写的IO size通常比较大(128KB-1MB),主要衡量吞吐量,而随机读写的IO size比较小(小于8KB),主要衡量IOPS ...

  10. dell r420 H310/H810阵列配置教程及常见问题

    进入H310/H810阵列卡BIOS界面 阵列卡管理快捷键 如何创建RAID0和RAID1和RAID5 阵列修复篇 Foreign(外来)状态的硬盘应如何处理 1.进入H310/H810阵列卡BIOS ...