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程序员有一个共识,以编译方式执行本地代码比解释方式更快,之所以有这样的共识,除去虚拟机解释 ...
随机推荐
- 加载 AssetBundle 的四种方法
[加载 AssetBundle 的四种方法] 1.AssetBundle.LoadFromMemoryAsync(byte[] binary, uint crc = 0); 返回AssetBundle ...
- spark快速开发之scala基础之1 数据类型与容器
写在前面 面向java开发者.实际上,具有java基础学习scala是很容易.java也可以开发spark,并不比scala开发的spark程序慢.但学习scala可有助于更快更好的理解spark.比 ...
- python--第五天总结
装饰器-- @ 重命名原函数,返回函数对象 是一个函数,至少两层执行函数,被装饰的函数作为参数----------------------------------------------------1 ...
- vue项目打包后图片路径问题
当用vue-cli自动构建项目后,有两种运行方法,分别是: npm run dev : 提供一个开发的环境,自动热更新,资源使用绝对路径,所以可以正常看到背景图片. npm run build : 打 ...
- no module named cv2
运行python脚本时报错: ImportError: No module named cv2 第一想法: 使用命令: pip install cv2 会报错找不到请求的版本 解决方法: 使用命令 p ...
- PAT1103
1103. Integer Factorization (30) 时间限制 1200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...
- POJ-2386.Lakecounting(DFS求连通块)
本题是一道连通块的入门题,用来练手,后续还会更新连通块的题目. 本题大意:一个n * m 的陆地上面有很多水洼,让你统计水洼的个数并输出. 本题思路:按照顺序遍历陆地,如果发现水洼就将它的八连块都进行 ...
- 179. Largest Number(INT, String)
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- F - Restoring the Expression CodeForces - 898F
字符串hash: base设置为10 枚举'='可能出现的位置,从1/2处开始到大概1/3处结束,当然大概的1/3不用计算,直接到最后就行,因为本题必然有解,输出直接结束即可. 根据'='号位置,' ...
- multithreading coding
分类:公共资源问题.公交车问题 顺序:Qseater lab, bank, doctor [饭店] geust //yuec2 Yue Cheng package lab9; public abstr ...