虚拟机
文章平均质量分 74
样young
没有什么可介绍的,希望能够在这里学到更多的知识
展开
-
JVM保守式GC(区分引用和基本数据)
HotSpotJVM在进行GC回收的时候,采用的是可达性分析法来对对象进行标记的,可达性分析法是从GC Roots出发(注意是GC Roots说明是有多个GC Root),当某个对象到GC Roots没有任何引用链时,则该对象判定为可回收对象(当然如果该对象重写过finalize()方法的话 还会有一次自我拯救的机会,会先将该对象放入一个F-Queue对象中)。不得不说,可达性分析法是一个非常不错的方法,能够解决引用计数法中相互引用而导致无法回收的问题。 从上面的描述中,我...转载 2021-11-12 23:20:08 · 1026 阅读 · 0 评论 -
volatile关键字的用法
关键字volatile的主要作用是使变量在多个线程间可见,强制从公共堆栈中取得变量的值,而不是从线程的私有数据栈中取得变量的值。这么说很难理解,我们直接看代码例子来说明。创建一个RunThread.java的类如下:运行类Run代码如下:public class RunTest { public static void main(String[] args){ try { RunThread thread = new RunThread();转载 2021-02-25 08:43:40 · 383 阅读 · 0 评论 -
Java运行时数据区域总结
本文转载自:http://www.cnblogs.com/fengbs/p/7029013.html 根据《Java 虚拟机规范(Java SE 7版)》规定,Java虚拟机所管理的内存将会包括一下几个运行时数据区域:1.程序计数器 程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概...转载 2018-04-30 14:38:43 · 392 阅读 · 0 评论 -
JVM中的新生代和老年代(Eden空间、两个Survior空间)
现有的主流JVM分别是HotSpot和JRockit,主要研究对象也是这两个。这篇文章里,我们只研究HotSpot,也就是所谓的Sun JVM。目前阶段,Sun的GC方式主要有CMS和G1两种。考虑到效果和实际应用,这里只介绍CMS。CMS,全称Concurrent Mark Sweep,是JDK1.4后期版本开始引入的新GC算法,在JDK5和JDK6中得到了进一步改进,它的主要适合场景是对响应时...转载 2018-05-01 15:47:21 · 61222 阅读 · 25 评论 -
《深入理解Java虚拟机》之长期存活的对象将进入老年代测试结果(-XX:MaxTenuringThreshold=15未生效)
在阅读《深入理解Java虚拟机》中长期存活对象进入年老代这部分内容时,将书中代码运行了一遍,结果如下(运行环境:jdk1.8.0_172):①当-XX:MaxTenuringThreshold=1时,运行结果与书中描述一致,allocation1对象在第二次GC发生时进入老年代。[GC (Allocation Failure) [DefNewDesired survivor size 524288...原创 2018-05-02 16:54:45 · 1740 阅读 · 1 评论 -
JVM调优参数简介、调优目标及调优经验
一、JVM调优参数简介1、 JVM参数简介-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。如果此类参数设置合理将大大提高JVM 的性能及稳定性。不稳定参数语法规则:1.布尔类型参数值 -XX:+<option> '+'表示启用该选项 -XX:-<option> '-'表示...转载 2018-05-03 10:42:44 · 25666 阅读 · 3 评论 -
Java之Runtime类介绍
本文转自:https://www.cnblogs.com/slyfox/p/7272048.htmlRuntime类代表着Java程序的运行时环境,每个Java程序都有一个Runtime实例,该类会被自动创建,我们可以通过Runtime.getRuntime() 方法来获取当前程序的Runtime实例。常用方法:获取当前JVM的内存信息/* * 获取当前jvm的内存信息,返回...转载 2018-09-11 21:43:35 · 784 阅读 · 0 评论 -
详解java.lang.Class
本文转自:https://www.cnblogs.com/xinhuaxuan/p/6019497.html一、Class类是什么 Class是一个类,位于java.lang包下。 在Java中每个类都有一个相对应的Class类的对象,换句话说:Java程序在启动运行时 一个XXX.java类经过编译生成XXX.class文件后,就会在JVM虚拟机中产生一个XXX类对应的...转载 2018-09-10 23:02:04 · 1170 阅读 · 0 评论 -
Java中的堆和栈的区别
本文转自:https://www.cnblogs.com/wwicked/articles/4707696.html当一个人开始学习Java或者其他编程语言的时候,会接触到堆和栈,由于一开始没有明确清晰的说明解释,很多人会产生很多疑问,什么是堆,什么是栈,堆和栈有什么区别?更糟糕的是,Java中存在栈这样一个后进先出(Last In First Out)的顺序的数据结构,这就是java.uti...转载 2018-09-24 22:02:25 · 324 阅读 · 0 评论