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程序员有一个共识,以编译方式执行本地代码比解释方式更快,之所以有这样的共识,除去虚拟机解释 ...
随机推荐
- native和webview切换
native和webview 标签(空格分隔): native和webview 现在目前大部分的app都是native和webview混合,对应的native上的元素可以通过uiautomatorvi ...
- 检查WMI协议是否通的
在APM上的运行执行“wbemtest”,然后在上面的root\sivm前面加RPC不通的机器,先查WMI协议是否是通的
- 备份u盘kali系统
把kali系统装在u盘上,会带来极大的便利,只要有网有机就能随时随地hacking,但是u盘体积太小极易丢失,所以需要对其备份以备万一. 一般kali启动U盘分为两个区:启动区和文件存放区.如下图 我 ...
- 通过DataTable获得表的主键
转载http://www.cnblogs.com/hobe/archive/2005/10/07/249940.html 通过DataTable获得表的主键 很多情形下我们需要知道表的主键是什么.在A ...
- css3 vw、vh属性详解,以及与%、rem的区别介绍
最近的项目需求,内嵌电视端显示页面,所以使用到了css3的属性:vw \ vh,遇到一些问题,记录下来 vw.vh是什么? 字面上可以简单理解为,vw (view width),vh(view hei ...
- Django、Flask、Tornado的比较
一:常用请求参数的接收 Django中: request.GET/POST Tornado中: self.get_query_argument()/get_query_arguments() self ...
- 在.NET 4中用IIS部署WCF就这么简单
在.NET 3.5中,我们需要这样做: 1. 添加一个HelloService.svc文件,添加ServiceHost标记,在Service中添加WCF服务实现的名称,比如: <%@ Servi ...
- JETTY+NGINX
一.Jetty搭建 1)上传jetty.tar,并且解压(支持war和文件夹) [root@localhost home]# tar -xvf jetty.tar [root@localhost ho ...
- php的三种CLI常量:STDIN,STDOUT,STDERR
PHP CLI(command line interface)中,有三个系统常量,分别是STDIN.STDOUT.STDERR,代表文件句柄. 应用一: <?php while($line = ...
- FZU 2277 Change(dfs序+树状数组)
Problem Description There is a rooted tree with n nodes, number from 1-n. Root’s number is 1.Each no ...