Java虚拟机的相关笔记
1.垃圾GC回收事件Minor GC(只清除新生代),Full GC(清除新生代和老年代),Major GC(清除新生、老年代和持久代)。
2.堆分为新生代、老年代和持久代,持久代一般存放静态文件。
3.新生代和老年代的比例设置,在新生代会触发Minor GC,回收频率快,且回收事件快,老年代触发Full GC,回收频率慢,且回收时间长,所以要根据项目对象的存活时间来做相应的设置。新生代中的Eden和survivor的比例设置,一般Eden要比survivor大得多。
4.新生代和老年代的比例设置可以通过-XX:NewRatio相对设置和-Xmn绝对设置来进行设置,新生代/老年代。
5.新生代中的Eden和survivor的比例设置可以通过-XX:SurvivorRatio来设置,Eden/from=Eden/to。
6.HotSpot虚拟机的结构基本是:类加载子系统,方法区和堆,栈,pc寄存器,执行引擎,垃圾回收系统,(直接内存和本地方法栈)。
7.方法区是存放类信息,堆是所有线程共享的区域,栈是每个线程都有一个的区域。
8.垃圾回收算法:标记计数法,复制算法,标记压缩发,分区法,分代法。
9.垃圾回收器:串行回收器(单线程回收),并行回收器(多线程回收,-XX:+UseParNewGC,工作在新生代,回收算法和串行回收器一样;-XX:+UseParallelGC,工作在新生代,算法是复制算法;-XX:+UseParallelOldGC,工作在老年代,算法是标记压缩法),cms回收器(标记清除法),注重系统回收时的停顿时间和G1回收器,注重系统的吞吐量(单位时间内系统能处理的请求量)。
10.性能监视器:JDK自带的Jconsole.exe和JavavisualVM.exe
11.对象被回收的判断依据是什么?
被引用次数为0,。
12.什么时候触发垃圾回收?
1),因为垃圾回收时会停止应用,所以一般是在应用空闲的时候触发。
2),内存快满的时候触发,新生代快满的话会触发minor gc,内存堆快满的时候会full gc。
13.system.gc() 会触发full gc,但不能保证马上触发。
14.默认类加载器是bootstrap classloader
15.触发FULL GC的条件:1)system.gc();2:老年代空间不足的时候;3)方法区空间不足的时候;4)如果进行minor.gc后放到老年代的平均对象大小大于老年代的剩余空间大小时,例如程序第一次触发MinorGC后,有6MB的对象晋升到旧生代,那么当下一次Minor GC发生时,首先检查旧生代的剩余空间是否大于6MB,如果小于6MB,则执行Full GC。
Java虚拟机的相关笔记的更多相关文章
- 《深入java虚拟机》读书笔记之垃圾收集器与内存分配策略
前言 该读书笔记用于记录在学习<深入理解Java虚拟机--JVM高级特性与最佳实践>一书中的一些重要知识点,对其中的部分内容进行归纳,或者是对其中不明白的地方做一些注释.主要是方便之后进行 ...
- Java四种引用--《深入理解Java虚拟机》学习笔记及个人理解(四)
Java四种引用--<深入理解Java虚拟机>学习笔记及个人理解(四) 书上P65. StrongReference(强引用) 类似Object obj = new Object() 这类 ...
- Java虚拟机内存溢出异常--《深入理解Java虚拟机》学习笔记及个人理解(三)
Java虚拟机内存溢出异常--<深入理解Java虚拟机>学习笔记及个人理解(三) 书上P39 1. 堆内存溢出 不断地创建对象, 而且保证创建的这些对象不会被回收即可(让GC Root可达 ...
- 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势
0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...
- 《深入理解Java虚拟机》学习笔记
<深入理解Java虚拟机>学习笔记 一.走近Java JDK(Java Development Kit):包含Java程序设计语言,Java虚拟机,JavaAPI,是用于支持 Java 程 ...
- 《深入理解 Java 虚拟机》学习笔记 -- 内存区域
<深入理解 Java 虚拟机>学习笔记 -- 内存区域 运行时数据区域 主要分为 6 部分: 程序计数器 虚拟机栈 本地方法栈 Java 堆 方法区 如图所示: 1. 程序计数器(线程私有 ...
- 《深入理解Java虚拟机》学习笔记之类加载
之前在学习ASM时做了一篇笔记<Java字节码操纵框架ASM小试>,笔记里对类文件结构做了简介,这里我们来回顾一下. Class类文件结构 在Java发展之初设计者们发布规范文档时就刻意把 ...
- 《深入java虚拟机》读书笔记之Java内存区域
前言 该读书笔记用于记录在学习<深入理解Java虚拟机--JVM高级特性与最佳实践>一书中的一些重要知识点,对其中的部分内容进行归纳,主要是方便之后进行复习. 运行时数据区域 Java虚拟 ...
- 《深入理解java虚拟机》学习笔记之编译优化技术
郑重声明:本片博客是学习<深入理解Java虚拟机>一书所记录的笔记,内容基本为书中知识. Java程序员有一个共识,以编译方式执行本地代码比解释方式更快,之所以有这样的共识,除去虚拟机解释 ...
随机推荐
- SQL Select语句完整的执行顺序(转)
SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...
- 安卓自动生成代码插件-Android code Generator(转)
编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 介绍 A ...
- mro具体解释
你真的理解Python中MRO算法吗? [前言] MRO(Method Resolution Order):方法解析顺序.Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会 ...
- java 1.8
rpm -qa|grep java (列出本机已安装的java,没有则没空)rpm -e --nodeps 文件名(上一步查到的文件名,一个一个复制过来卸载就好.) 下载java包 https://w ...
- Hive和并行数据仓库的比较
最近分析和比较了Hive和并行数据仓库的架构,本文记下一些体会. Hive是架构在Hadoop MapReduce Framework之上的开源数据分析系统. Hive具有如下特点: 1. 数据以HD ...
- cloudera-hdfs 告警处理
2018-03-13 11:15:17,215 WARN [org.apache.flume.sink.hdfs.HDFSEventSink] - HDFS IO error org.apache.h ...
- Tomcat登陆mysql的密码设置
在登陆mysql的密码和数据库密码不一致时,可以修改Mysql数据库密码或者修改连接Mysql的配置文件: 1.修改连接Tomcat里连接Mysql的配置文件 需要修改两个配置文件 ,一个是在tom ...
- 1-跑Faster R-CNN项目中的一些问题
原理介绍: https://blog.csdn.net/quincuntial/article/details/79132243 我用的环境: Python 3.5.2 cpu版的ten ...
- 解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX(转)
原文地址:https://www.cnblogs.com/feng18/p/5646925.html 从网上抓了一些字节流,想打印出来结果发生了一下错误: UnicodeEncodeError: 'g ...
- ERROR: APK path is not specified for
1. 打开project structure 2.设置outpath路径 最好为绝对路径 点击确定 重新编译即可. Note: Android Studio版本使用