
jvm
请叫我大虾
这个作者很懒,什么都没留下…
展开
-
jvm:运行时数据区--方法返回地址
原创 2021-03-30 19:54:17 · 271 阅读 · 0 评论 -
jvm:虚方法与非虚方法
原创 2021-03-30 09:26:07 · 456 阅读 · 0 评论 -
jvm:运行时数据区--操作数栈
原创 2021-03-29 10:57:17 · 233 阅读 · 0 评论 -
jvm:运行时数据区
原创 2021-03-14 17:46:54 · 197 阅读 · 0 评论 -
jvm:类加载器和类的加载过程
public class DeadThreadTest { public static void main(String[] args) { Runnable r = () ->{ System.out.println(Thread.currentThread().getName()+"开始"); DeadThread deadThread = new DeadThread(); ...原创 2021-03-09 23:51:59 · 212 阅读 · 0 评论 -
jvm十五:java虚拟机内存图
原创 2020-11-30 23:04:21 · 275 阅读 · 0 评论 -
jvm十四:类的卸载
原创 2019-04-14 20:48:43 · 372 阅读 · 0 评论 -
jvm十三:类加载器命名空间
package com.atChina.jvm;import java.io.*;public class Test16 extends ClassLoader{ private String classLoaderName; private String path; private String fileExtension = ".class"; ...原创 2019-04-14 18:03:01 · 266 阅读 · 0 评论 -
jvm十二:自定义类加载器
package com.atChina.jvm;import java.io.*;public class Test16 extends ClassLoader{ private String classLoaderName; private String fileExtension = ".class"; public Test16(String classL...原创 2019-04-14 15:16:00 · 278 阅读 · 0 评论 -
jvm十三:ClassLoader的源码文档解读
* <p> <tt>Class</tt> objects for array classes are not created by class* loaders, but are created automatically as required by the Java runtime.* The class loader for an array cla...原创 2019-04-12 21:58:57 · 446 阅读 · 0 评论 -
jvm十二:获取ClassLoader的途径
package com.atChina.jvm;public class Test13 { public static void main(String[] args) { ClassLoader classLoader = ClassLoader.getSystemClassLoader(); System.out.println(classL...原创 2019-04-12 20:23:00 · 507 阅读 · 0 评论 -
jvm二:类加载,连接,初始化
在java代码中,类型的加载,连接与初始化过程都是在程序运行期间完成的。 这种方式提供了更大的灵活性,增加了更多的可能性。动态代理的类型在运行期间才被创建出来,在编译期间是不存在的。类的加载,连接,初始化1.常见的加载方式: 将已经编写好的类的class文件从磁盘上加载到内存中。(查找并加载类的二进制数据) 将类的.cl...原创 2019-04-03 14:01:08 · 259 阅读 · 0 评论 -
jvm四:常量的本质含义以及助记符基本认识
package com.atChina.jvm;/** 常量在编译阶段会存入到调用这个常量的方法所在的类的常量池中,* 本质上,调用类并没有直接引用到定义常量的类,因此并不会触发* 定义常量的类的初始化, 因此也就不会执行静态代码块的代码** 如下代码: 常量f="刘备",存放到了Test2的常量池中,之后Test2与Father2就没有任何关系了* 甚至,我们可以删除F...原创 2019-04-05 11:08:42 · 335 阅读 · 0 评论 -
jvm五:编译期不能确定常量的值
package com.atChina.jvm;import java.util.UUID;/* * 当一个常量的值并非编译期间可以确定的,那么其值就不会被放到调用类的常量池中 * 这时在程序运行时,会导致主动使用这个常量所在的类,因此常量所在的类会被初始化 */public class Test3 { public static void main(String[...原创 2019-04-05 12:40:57 · 354 阅读 · 0 评论 -
jvm六:主动使用(1.new一个对象, 2.反射)
new一个对象package com.atChina.jvm;public class Test4 { public static void main(String[] args) { // 所有的java虚拟机实现必须在每个类或接口被java程序"首次主动使用"时才初始化他们。(初始化只会被执行一次) Father4 f = new Fathe...原创 2019-04-05 12:52:07 · 362 阅读 · 0 评论 -
jvm七:数组创建本质
package com.atChina.jvm;/** 对于数组实例来说,其类型是由JVM在运行期动态生成的,表示为[Lcom.atChina.jvm.Father4* 这种方式,动态生成的类型,其父类型就是Object** 对于数组来说,JavaDoc经常将构成数组的元素称为Component,实际上就是将数组降低一个维度的类型** 助记符:* a...原创 2019-04-05 13:39:34 · 642 阅读 · 0 评论 -
jvm八:接口初始化规则
package com.atChina.jvm;import java.util.Random;/* * 当一个接口在初始化时,并不要求其父接口都完成了初始化 * 只有在真正使用到父接口的时候,(如引用接口中所定义的常量时),才会初始化 */public class Test5 { public static void main(String[] args) { ...原创 2019-04-05 15:34:44 · 319 阅读 · 0 评论 -
jvm十:类加载器解析
1.类的加载 类的加载的最终产品是位于内存中的class对象. Class对象封装了类在方法区内的数据结构,并且向java程序员提供了访问方法区内的数据结构的接口. 2. 类的连接类被加载后,就进入连接状态. 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去. 类的连接---验证 类...原创 2019-04-10 23:46:20 · 250 阅读 · 0 评论 -
jvm十一:类加载器双亲委托机制
在双亲委托机制中,各个加载器按照父子关系形成了树形结构,除了根类加载器之外,其余的类加载器都且只有一个父加载器。package com.atChina.jvm;import sun.awt.Symbol;import java.util.SortedMap;public class Test7 { public static void main(Stri...原创 2019-04-11 21:10:00 · 244 阅读 · 0 评论 -
jvm一:常用工具
1. jvisualvm, 在命令行输入 jvisualjm就可以打开该工具2. jconsole, 在命令行输入 jconsole就可以打开该工具原创 2019-04-03 12:18:18 · 281 阅读 · 0 评论 -
jvm三:jvm参数
jvm参数的三种形式-XX:+<option> 表示开启option选项-XX:-<option> 表示关闭option选项-XX:<option>=<value> 表示将option选项的值设为value-XX:+TraceClassLoading 跟踪类的加载情况-XX:+TraceC...原创 2019-04-05 09:57:58 · 276 阅读 · 0 评论