![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
jdk、jvm
文章平均质量分 86
jvm详解与调优
会飞地太阳
Life begins at the end of your comfort zone
展开
-
深入学习JVM
1. 类的加载、连接与初始化过程类的加载:1. 类的加载的最终产品是位于内存的Class对象。2. Class对象封装了类在方法区内的数据结构,并且向java程序员提供了访问方法区内的数据结构的接口。有两种类型的类加载器: 1. java虚拟机自带的加载器 1.1 根类加载器Bootstrap 1.2 扩展类加载器 Extension 1.3 系统(应用)类加载器System 2.用户自定义的类加载器 2.1java...原创 2021-08-21 14:54:09 · 225 阅读 · 0 评论 -
常量的本质含义与反编译及助记符详解
还记得才接触到类的初始化时的窘态,如今再次学习jvm,理解这些底层的东西,希望可以得到更多的收获。首先看下面的代码:绝大多数人应该都能想到程序运行的结果吧,但是为什么是如此的呢?我们知道所有java虚拟机实现必须在每个类或接口被java程序“首次主动使用”时才初始化。显然上面的案例中并没有触发Parent1类的初始化,原因如下: 在Parent1中我们定义的是编译期的常量,即这些常量在编译阶段会被存入调用这个常量的方法所在的类的常量池中,本质上:调用类并没有直接引用...原创 2021-07-23 22:13:18 · 209 阅读 · 0 评论 -
Tomcat 类加载器之为何违背双亲委派机制
在之前的博客中已经介绍了类加载机制,今天来谈谈Tomcat为何打破了双亲委派机制。先了解几个概念: java虚拟机把描述类的数据从Class文件加载进内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。 把类加载阶段中的"通过一个类的全限定名来获取描述此类的二进制文件"这个动作放到java虚拟机外部去实...原创 2020-03-03 15:52:26 · 671 阅读 · 0 评论 -
JDK 1.8 新特性
jdk1.8(Java 8)是java语言开发的一个主要版本,Oracle公司于2014年3月18日发布Java 8.它支持函数式编程,新的JavaScript引擎等等。1. Lambda表达式 它允许把函数作为一个方法的参数 格式:(parameters参数)-> expression表达体或方法体 parameters参数: ...原创 2020-02-10 14:46:10 · 313 阅读 · 0 评论 -
jdk,jre 与 jvm 的联系与区别
对于刚接触java的小伙伴们,对jdk,jre 与 jvm 的联系与区别可能一头雾水,很多java程序员在写了很多代码后,对于此问题也不知所云。本文就做一个回顾总结,希望可以帮到小伙伴们。简单来说就是: JDK包含jre,jre包含jvm。jre只是提供了java的运行环境,只能运行class而没有编译功能,而JDK是用于java程序的开发,它的功能比较多。jdk安装成功后,打开...原创 2020-02-07 15:07:12 · 670 阅读 · 0 评论 -
java开发环境——JDK的安装及配置
不知读到此文的朋友在java之路走了多久,本文回顾刚接触java时进行的第一个操作吧。java开发环境jdk的安装与配置。一、JDK的下载及安装官网地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html根据自己需要,下载所需的JDK安装包(记得勾选 Accept License Agreement同意许...原创 2020-02-07 15:08:43 · 2666 阅读 · 0 评论 -
JVM的调优(六)
在之前的博客中涉及到了JVM的调优,本文针对JVM的调优做一个简单的小结。1.JVM的调优参数 1.1 JVM三大性能调优参数 -Xss:规定了每个线程虚拟机(堆栈)的大小 -Xms:堆的初始值 -Xmx:堆能达到的最大值 1.2 堆设置 -Xms:初始堆大小 -Xmx:...原创 2020-02-10 19:20:59 · 393 阅读 · 0 评论 -
Java内存模型JMM(五)
JMM即java内存模型(Java Memory Model)。它定义了java虚拟机(JVM)在计算机内存中的工作方式。JVM是整个计算机虚拟模型,所有JMM隶属于JVM。从抽象角度来看,JMM定义了线程和组内存之间的抽象关系,线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存中存储了该线程以读/写共享变量的副本。本地内存是JVM的一个抽象概念,并不是真实存在。它涵盖了缓...原创 2020-02-09 17:37:28 · 329 阅读 · 0 评论 -
jvm GC垃圾回收机制(四)
上一篇博客中介绍到JVM的垃圾回收机制中GC主要发生在堆中,堆区由所有线程共享,在虚拟机启动时创建。主要用于存放对象实例和数组,所有new出来的对象都存储在该区域。jvm虚拟机,本地方法栈,程序计数器不需要进行垃圾回收,因为它们的生命周期是和线程同步的,随着线程的销毁自动释放内存,所有,只有方法区和堆区需要进行垃圾回收,回收的对象就是不存在任何引用的对象。堆中内存分布:针对于分代收集算...原创 2020-02-09 16:04:37 · 271 阅读 · 0 评论 -
走近栈,堆 和方法区(三)
对于JVM大家知道几种呢?除了java开发常用的HotSpot外,其实还有另外两种JVM的存在。只做简单的了解即可。1. Sun公司 HotSpot Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)2. BEA JRockit3. IBM J9 VM本文介绍的是HotSpot的栈,堆和方法区。一...原创 2020-02-08 21:46:00 · 289 阅读 · 0 评论 -
JVM之类加载机制和类加载器 (二)
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。类加载的全过程类从被加载到虚拟机内存开始,到卸载。生命周期包括七个阶段,如下图:注意:加载--->验证--->准备--->初始化--->卸载这5个阶段的顺序是确定的,而解析可能为了支持Ja...原创 2020-02-07 21:44:17 · 283 阅读 · 0 评论 -
浅谈jvm体系结构(一)
JVM是java程序得以运行的平台,也是java程序可以跨平台的底层支撑。下面是JVM的一个体系结构图类加载器(Class Loader)Class文件需要被加载到内存里才能得以运行和使用。虚拟机把Class文件加载到内存后,对数据进行验证,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。具体内容在之后的篇幅进行详细介绍。参考博客https:...原创 2020-02-07 20:15:19 · 1649 阅读 · 0 评论