
JVM虚拟机
文章平均质量分 84
Jae_Wang
~
展开
-
JVM—类文件结构
Class文件是一组以8位字节为基础单位的二进制流,包含多个数据项目(数据项目的顺序,占用的字节数均由规范定义),各个数据项目严格按照顺序紧凑的排列在Class文件中,不包含任何分隔符,使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙。当遇到需要占用超过8位字节以上空间的数据项目时,会按照高位在前的方式分割为多个8位字节进行存储数据项目分为2种基本数据类型(以及由这两种基...转载 2018-05-10 19:32:10 · 552 阅读 · 0 评论 -
理解归纳方法区和常量池
前言 方法区用于存储已经被虚拟机加载的类信息(class文件是存入方法区的),常量,静态变量。 我对方法区的理解其实是个逻辑区,其是在哪里不重要,在堆内外都没关系,对于HotSpot来说,方法区JDK1.7是在永久代,而1.8在元空间(与堆不相连的本地内存)。 而常量池是方法区的一部分(说的不是很准备)1. 常量池:常量池,分为class常量池和运行时常量池,运行时的常量池是属于...原创 2018-05-12 15:31:34 · 6978 阅读 · 1 评论 -
常量池技术对包装类的作用
前言 对常量池和方法区有一个清晰的认识,那么Integer i = 10在 JVM 是怎么运行的呢?一. 常量池的好处常量池是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。 例如字符串常量池,在编译阶段就把所有的字符串文字放到一个常量池中。 (1)节省内存空间:常量池中所有相同的字符串常量被合并,只占用一个空间。 (2)节省运行时间:比较字符串时,==比equals()快...转载 2018-05-12 16:17:07 · 868 阅读 · 0 评论 -
JVM
JVM 内存可简单分为三个区:1、堆区(heap):用于存放所有对象,是线程共享的(注:数组也属于对象)2、栈区(stack):用于存放基本数据类型的数据和对象的引用,是线程私有的(分为:虚拟机栈和本地方法栈)3、方法区(method):用于存放类信息、常量、静态变量、编译后的字节码等,是线程共享的(也被称为非堆,即 None-Heap)Java 的垃圾回收器(GC)主要针对堆区对于方法调用,会创...转载 2018-05-06 16:56:53 · 158 阅读 · 0 评论 -
深入分析ClassLoader原理
一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,则会...转载 2018-05-13 15:03:21 · 282 阅读 · 0 评论 -
利用ClassLoader自定义实现Java热替换~
前言: 之前的热部署和热替换在之前的已经介绍过了~这里直接实现~有几个常用的方法先介绍一下:自定义加载器继承ClassLoader:loadClass:加载类的入口方法,类似一个工具,完全可以控制和管理~ 大致分为几步: 1. 调用findLoadedClass来判断是否加载过 2. 父类调用loadClass 3. 调用findC...转载 2018-05-25 23:45:55 · 3194 阅读 · 0 评论 -
JVM — 类加载机制
前言:通过这部分知识让我们对一些Java基础有更深刻的了解,也是为了精进Java的第一步。为了有更好的阅读体验推荐类文件结构,一、为什么要使用类加载器Java语言里,类加载都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会给java应用程序提供高度的灵活性。例如:1.编写一个面向接口的应用程序,可能等到运行时再指定其实现的子类;2.用户可以自定义一个类加载器,让程序在运...原创 2018-05-15 21:26:02 · 286 阅读 · 0 评论 -
线程上下文类加载器
Java 提供了很多服务提供者接口(Service Provider Interface,SPI),允许第三方为这些接口提供实现。常见的 SPI 有 JDBC、JCE、JNDI、JAXP 和 JBI 等。 这些 SPI 的接口由 Java 核心库来提供,而这些 SPI 的实现代码则是作为 Java 应用所依赖的 jar 包被包含进类路径(CLASSPATH)里。SPI接口中的代码经常需要加载具体...转载 2018-05-16 08:32:59 · 182 阅读 · 0 评论 -
Java Hotspot G1 GC的一些关键技术
前言G1 GC,全称Garbage-First Garbage Collector,通过-XX:+UseG1GC参数来启用,作为体验版随着JDK 6u14版本面世,在JDK 7u4版本发行时被正式推出,相信熟悉JVM的同学们都不会对它感到陌生。在JDK 9中,G1被提议设置为默认垃圾收集器(JEP 248)。在官网中,是这样描述G1的:The Garbage-Fi...转载 2018-07-08 14:39:30 · 815 阅读 · 0 评论