JAVA - 深入JAVA 虚拟机 1
Java虚拟机与程序的生命周期
Java虚拟机将结束生命周期
1.call System.exit(n)
Terminates the currently running JVM.
2.程序正常执行结束
3.程序在执行过程中遇到了异常或者错误而异常终止
4.由于操作系统出现错误而导致JVM进程终止
类的加载,连接和初始化
加载: 查找并加载类的二进制数据
连接: 验证:确保被加载的类的正确性
准备:为类的静态变量分配内存,并将其初始化为默认值
解析:把类中的符号引用转换为直接引用
初始化:为类的静态变量赋正确的初始值

Java程序对类的使用方式
主动使用:
-创建类的实例
-访问某个类或者接口的静态变量,或者对该静态变量赋值
-调用类的静态方法
-反射(Class.forName("com.xueruan.Test"))
-初始化一个类的子类
-Java虚拟机启动时被标明启动类的类
被动使用:
所有JAVA虚拟机实现必须在每个类或接口被JAVA程序“首次主动使用时” 才初始化他们
类的加载指将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆
区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构
加载类的方式:
-从本地系统加载.class文件
-通过网络下载.class文件
-通过zip,jar等归档文件中加载.class文件
-从专有数据库中提取.class文件
-将JAVA源文件动态编译为.class文件

JAVA - 深入JAVA 虚拟机 1的更多相关文章
- Android JNI c/c++调用java 无需新建虚拟机
近期通过研究SDL源码 得出android JNI c/c++调用java 无需新建虚拟机: 具体步骤如下 第一步获得:两个参数 JNIEnv和jclass void Java_com_Test_A ...
- JAVA面试-java虚拟机
1.JVM简析: 作为一名Java使用者,掌握JVM的体系结构也是很有必要的. 说起Java,我们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Ja ...
- Java之Java程序与虚拟机
Java为什么要在虚拟机中运行 简单的来说,Java作为一门高级程序语言,语法复杂,抽象度高,不能直接翻译为机器码在机器上运行,所以设计者就设计了虚拟机,通过编译器将Java程序转换成虚拟机所能识别的 ...
- atitit.基于虚拟机的启动器设计 --java 启动器 java生成exe
atitit.基于虚拟机的启动器设计 --java 启动器 java生成exe exe4j vs nativej 1. step1读取配置文件 1 1.1. regular mode . ...
- java中JVM虚拟机内存模型详细说明
java中JVM虚拟机内存模型详细说明 2012-12-12 18:36:03| 分类: JAVA | 标签:java jvm 堆内存 虚拟机 |举报|字号 订阅 JVM的内部结构 ...
- [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)
如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html 谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...
- 深入Java核心 Java内存分配原理精讲
深入Java核心 Java内存分配原理精讲 栈.堆.常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同.本文将深入Java核心,详细讲解Java内存分配方面的知识. Java内存分 ...
- 图说Java —— 理解Java机制最受欢迎的8幅图
原文链接: Top 8 Diagrams for Understanding Java 翻译人员: 铁锚 翻译时间: 2013年10月29日 世间总是一图胜过千万言! 下面的8幅图来自于 Progr ...
- [Java][20160707]Java语言介绍
Java最早的名称叫"oak"后来改名叫"Java". Java最早是属于"Sun"公司的, 后来被"Oracle"公司 ...
- 【Java】Java XML 技术专题
XML 基础教程 XML 和 Java 技术 Java XML文档模型 JAXP(Java API for XML Parsing) StAX(Streaming API for XML) XJ(XM ...
随机推荐
- ASP.NET Core MVC 模型绑定用法及原理
前言 查询了一下关于 MVC 中的模型绑定,大部分都是关于如何使用的,以及模型绑定过程中的一些用法和概念,很少有关于模型绑定的内部机制实现的文章,本文就来讲解一下在 ASP.NET Core MVC ...
- Vue单页式应用(Hash模式下)实现微信分享
前端微信分享的基本步骤: 一.绑定域名: 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名".这个不多说,微信开发 ...
- spring.handlers、spring.schemas、spring.tooling被覆盖的三种解决方式
在用到spring时,本地IDE里面跑的很正常,但是打jar包后在集群上运行时报错. 查找资料后确定了问题的根源,由于在依赖中调用了spring的许多包,每个包都有自己的spring.schemas文 ...
- Quartz源码分析
先简单介绍一下quartz,Quartz是一个功能丰富的开源作业调度库,可以集成到几乎任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统.quartz可用于创建执行数十,数百甚至数十 ...
- 脑洞大开--一条项目中常用的linux命令引发的经典算法题
小时候家里定了<读者>的月刊,里面记录一个故事:说有有个偏僻的乡村一日突然来了一个美女,她携着万贯家财子女在当地安家落户,成了当地的乡绅.她让她的子女世世代代的保守这个秘密,直到这个秘密不 ...
- 【Selenium】Selenium1
一.Selenium1组件 (1)Selenium服务器,负责启动关闭浏览器:解释和运行从测试程序中传来的Selenium命令:HTTP代理:获取和验证在浏览器和被测试的应用程序之间的传递的HTTP消 ...
- Bash的作业控制
作业控制是bash Shell提供的一项强大功能,它允许你选择在前台还是后台运行程序,即作业. 1.开启bash的作业控制功能 #set -o monitor或#set -m 2.显示在后台运行的作业 ...
- JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现
一.自定义拦截器 1.架构 2.拦截器创建 //拦截器:第一种创建方式 //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 public class MyInterceptor implemen ...
- Spring事务管理—aop:pointcut expression解析
先来看看这个spring的配置文件的配置: <!-- 事务管理器 --> <bean id="transactionManager" class="o ...
- JS键盘事件对象之keyCode、charCode、which属性对比
先说一些有关键盘事件的事项:用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydown,keypress和keyup,它们分别对应onkeydown. onkeypress和onkeyup这 ...