![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
Java 虚拟机相关的内容
江湖人称小程
踏实一点,不要着急。你想要的岁月都会给你。
展开
-
Java中自定义类加载器
在上文中(Java中双亲委派机制的实现原理),我们了解到双亲委派机制的实现原理,通过了解它,可以帮助我们更好自定义属于我们自己的类加载器。想要自定义类加载器,只需简单三步:继承 ClassLoader重写 findClass() 方法使用 defineClass() 方法生成 Class 对象流程概述下面我们就来实现自己的类加载器,大致流程如下:创建一个需要被自定义加载器加载的类,并且把它放在 classpath 以外的其他地方。继承 ClassLoader,并重写 findClass原创 2020-06-15 19:02:57 · 569 阅读 · 0 评论 -
Java中双亲委派机制的实现原理
在上文中我们了解到,应用程序都是由3种类加载器相互配合工作的,如果有要求,还可以加上自定义类加载器。而这些类加载器之间的关系如下图所示:图中展示的类加载器之间的这种层次关系,有个专业的名称,叫做:双亲委派模型(Parents Delegation Model)。双亲委派模型要求除了顶层的启动类加载器(Bootstrap ClassLoader)外,其他的类加载器都应该有自己的父类加载器。在上文中已经解释了 Application ClassLoader、Extension ClassLoader 和 B原创 2020-06-15 14:26:22 · 724 阅读 · 0 评论 -
超详细,一看就懂!Java中基础对象以及String字符串对象的内存分配情况分析
概述我们通常把Java内存区分为堆内存(Heap)和栈内存(Stack),这种分法比较粗糙,Java内存区域的划分实际上远比这复杂。这种划分方式的流行只能说明大多数程序员最关注的、与对象内存分配关系最密切的内存区域是这两块。其中所指的“栈”就是虚拟机栈,或者说是虚拟机栈中的局部变量表部分在方法中定义的一些基本类型的变量和对象的引用变量都是在方法的栈内存中分配,当在一段代码块定义一个变量时,Ja...原创 2019-05-07 22:50:51 · 2551 阅读 · 2 评论 -
Java实现自定义ClassLoader类加载器动态加载class文件并解密
要实现classLoader动态解密class文件,就必须先了解Java的类加载机制、了解双亲委托机制。然后自定义一个classLoader,继承于classLoader。文章中引用到上一篇文章中的解密方法(edCipher.decryptClass(name)),详情请移步至:https://blog.csdn.net/qq_28082757/article/details/81481215...原创 2018-08-07 15:23:28 · 7095 阅读 · 1 评论 -
经典String str = new String("abc")内存分配问题
String str = new String("abc");首先将这行代码分成String str、=、”abc”和new String()四部分来看待。String str只是定义了一个名为str的String类型的变量,因此它并没有创建对象;=是对变量str进行初始化,将某个对象的引用(或者叫句柄)赋值给 它,显然也没有创建对象;现在只剩下new String(“abc”)了。先看一下new原创 2017-05-27 17:00:53 · 8937 阅读 · 4 评论 -
Java虚拟机类加载机制中的ClassLoader类加载器详解以及如何自定义ClassLoader类加载器
文章目录1、Java虚拟机的类加载机制概述2、Java虚拟机中的类加载器2.1、查看类加载器加载的路径2.1.1、查看启动类加载器2.1.2、查看扩展类加载器3、类加载器之间的关系3.1、每个类加载器都有一个父加载器3.2、父加载器不是父类3.3、Bootstrap ClassLoader4、双亲委派模式4.1、重要方法4.1.1、loadClass()4.1.2、findClass()4.1.3...原创 2019-05-09 18:04:41 · 6839 阅读 · 3 评论 -
JVM Java虚拟机中类加载机制
Java 中的类加载器学习总结于-《深入了解JAVA虚拟机》-周自明Java虚拟机的类加载机制虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是Java虚拟机的类加载机制Java类具体是如何被加载的,请参照文章:https://blog.csdn.net/qq_28082757/article/details/106427403在了解Java虚拟机是如何进行类加载过程之后,就需要弄明白今天的主角儿,什么类加载器?在类原创 2020-06-03 15:26:47 · 711 阅读 · 2 评论 -
Java中类(class)的加载过程
学习总结于:《深入了解JAVA虚拟机》-周志明Java 类的声明周期类从被加载到虚拟机内存中开始,直到卸载出内存,整个生命周期分为以下七个阶段:类加载过程就是指:加载、验证、准备、解析和初始化这五个阶段Java 类加载过程加载在加载阶段,虚拟机会做一下三件事情:通过一个类的全限定名来获取定义此类的二进制流。将这个二进制流所代表的的静态储存结构转化成方法区的运行时数据结构。在内存中生成这个类的java.lang.class对象(不一定是在堆内存中,HotSpot认为这个Class对象.原创 2020-05-29 16:13:46 · 530 阅读 · 0 评论 -
Java加密解密class文件,使用classLoader动态解密class文件
在日常开发中,可能会遇到要对系统中比较敏感的代码进行保护,那么下面就总结一下保护源码的方法中最简单的方式,即文件加密首先,加密和加密的大致思想是:加密无非就是对加密后的class文件进行异或一下,解密呢,那就是再对class文件异或回来即可。加密后的文件如果想要用到的话,就需要classLoader动态加载进来,具体实现为:/** * 加解密类 */public class E...原创 2018-08-07 14:52:48 · 8466 阅读 · 0 评论