随笔分类 -  JVM

摘要:Java虚拟机JVM学习07 类的卸载机制 类的生命周期 当Sample类被加载、连接和初始化后,它的生命周期就开始了。 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,Sample类在方法区内的数据也会被卸载,从而结束Sample类的生命周期。 由此可 阅读全文
posted @ 2017-05-05 18:20 書话 阅读(195) 评论(0) 推荐(0)
摘要:Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论 创建用户自定义的类加载器 要创建用户自定义的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的findClass(String name)方法即可,该方法根据参数指定的类的名字,返回对应的Clas 阅读全文
posted @ 2017-05-05 18:20 書话 阅读(166) 评论(0) 推荐(0)
摘要:Java虚拟机JVM学习05 类加载器的父委托机制 类加载器 类加载器用来把类加载到Java虚拟机中。 类加载器的类型 有两种类型的类加载器: 1.JVM自带的加载器: 根类加载器(Bootstrap) 扩展类加载器(Extension) 系统类加载器(System) 2.用户自定义的类加载器: j 阅读全文
posted @ 2017-05-05 18:12 書话 阅读(186) 评论(0) 推荐(0)
摘要:类被加载后,就进入连接阶段。 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去。 连接阶段三个步骤:验证、准备和解析。 类的验证 类的验证内容: 1.类文件的结构检查 确保类文件遵从Java类文件的固定格式。 2.语义检查 确保类本身符合Java语言的语法规定,比如验证final 阅读全文
posted @ 2017-05-05 18:11 書话 阅读(232) 评论(0) 推荐(0)
摘要:Java虚拟机JVM学习04 类的初始化 类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值。 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始化; 2.在静态代码块中进行初始化。 没有经过显式初始化的静态变量将原有的值。 一个比较奇怪的例子: 阅读全文
posted @ 2017-05-05 18:11 書话 阅读(256) 评论(0) 推荐(0)
摘要:Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。 加载.class文件的方式: 1.从本地系统中直接加载 2.通 阅读全文
posted @ 2017-05-05 18:10 書话 阅读(184) 评论(0) 推荐(0)
摘要:Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序。 当启动一个Java程序时,一个虚拟机实例诞生;当程序关闭退出,这个虚拟机实例也就随之消亡。 如果在同一台计算机上同时运行多个Java程序,将得到多个Java虚拟机实例,每个Java程序都运行于它自己的Ja 阅读全文
posted @ 2017-05-05 18:09 書话 阅读(193) 评论(0) 推荐(0)
摘要:1 开门见山 以前曾经看到过一个java的面试题,当时觉得此题很简单,可是自己把代码运行起来,可是结果并不是自己想象的那样。题目如下: 12345678910111213141516171819202122class SingleTon { private static SingleTon sing 阅读全文
posted @ 2017-05-05 17:20 書话 阅读(183) 评论(0) 推荐(0)
摘要:深入理解Java内存模型(一)——基础 并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线 阅读全文
posted @ 2017-05-04 16:20 書话 阅读(263) 评论(0) 推荐(0)