社区
Java SE
帖子详情
谁能为我讲清楚编译,装载,连接,初始化这之间的关系和顺序?越清楚越好。
xuanxufeng
2012-07-24 10:11:56
谁能为我讲清楚编译,装载,连接,初始化这之间的关系和顺序?越清楚越好。特别是涉及到static类型的成员。
...全文
128
4
打赏
收藏
谁能为我讲清楚编译,装载,连接,初始化这之间的关系和顺序?越清楚越好。
谁能为我讲清楚编译,装载,连接,初始化这之间的关系和顺序?越清楚越好。特别是涉及到static类型的成员。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BadPattern
2012-07-25
打赏
举报
回复
java是动态语言,没有链接这一步骤,只在类加载的过程中有连接过程.
编译就是将源文件编译为class文件.
类加载过程分为:加载,连接(又分为验证,准备和解析三步)和初始化,static成员在准备的过程中被分配内存并赋予默认值(位模式全部为0),在初始化的过程通过初始化方法(静态方法,静态块等)被赋予各种程序员想要给予的值.
Sammie
2012-07-24
打赏
举报
回复
Java的运行过程:
Java源文件(*.java)——>Java编译器——>字节码文件(*.class)——>类装载器——>字节码校检器——>解释器——>操作系统(Windows、Linux等)整个文件Load到内存区,一系列动作之后形成操作系统认识的代码,操作系统找到main方法开始实行。
每个解释:
1、编译:指使用Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件的过程。
2、装载:运行JVM字节码的工作是由解释器( java命令 )来完成的。解释执行过程分三部进行:代码的装入、代码的校验和代码的执行。装入代码的工作由"类装载器"(class loader)完成。
ClassLoader.getSystemClassLoader().loadClass(类)。最终产生一个CLASS对象
3、连接:装载后进行验证、预备和解析的过程。
-- 验证:类在语法等相关的验证
-- 预备:就是你类中一些变量等等开辟空间的操作
-- 解析:在类型的常量池中寻找类、接口、字段和方法的符号引用,把这些符号引用替换成直接引用。
4、初始化:我所理解的是代码执行的顺序。
他们之间的关系:
一个类的源文件先编译成字节码文件,然后在执行这类的时候需要做先装载,然后连接,最后初始化。
以上个人理解,关于理论问题最怕害人,所以仅供参考。
冰思雨
2012-07-24
打赏
举报
回复
没听说Java还有连接这个步骤。连接,在学C语言的时候,听说过。
编译,就是把按照Java语法规则编写的文本文件(源码文件)按照一定的规则转换成字节码文件(.class文件)的过程。
字节码文件能够被JVM识别,并解释执行。字节码文件的数据结构,是开放的,官方已经制定了标准。
装载,就是Java虚拟机将字节码文件的内容,读取到内存当中的过程。
mengyalizuopeng
2012-07-24
打赏
举报
回复
Bruce Eckel可以 ,。。
理解kernel Makeiflie
编译
哪些在什么条件
编译
其次,根据不同产品方案,一定要修改代码,不可避免要修改
编译
脚本 很多同学只懂得简单的添加一个
编译
驱动,如何选择配置文件,内核这套
编译
体系工作的本质非常模糊或者不
清楚
。本课程分析内核vm...
高手过招:请教:变量到底是在
编译
的时候
初始化
的,还是在运行的时候
初始化
的?
请教:变量到底是在
编译
的时候
初始化
的,还是在运行的时候
初始化
的? [问题点数:40分,结帖人learnc2015] https://bbs.csdn.net/topics/391832733 收藏帖子 回复 learnc2015 结帖率 62.5% 变量到底是在
编译
的时候
初始化
的,还是在运行的时候
初始化
的? 如下函数:居然调用两次打印出来的值分别是1和2,非常不好理解 如果按照C...
c 语言全局变量
初始化
,C中全局变量和static变量的存储与
初始化
目标文件、可执行程序及其他二进制文件以ELF格式存储在磁盘中,该文件有两个重要的段(section),即代码段和数据段。数据段又分为:.data 段 和 .bss段,其中.data段存储已
初始化
的全局变量和静态变量,.bss 段存储未
初始化
的全局变量。在C中,凡是在任何代码块之外声明的变量总是存储于静态内存中,也就是不属于堆栈的内存,这类变量称为静态(static)变量。——C和指针(p43)这句...
VxWorks6.9
初始化
流程介绍
一、系统框架 在讲
初始化
流程之前,我们先了解下VxWorks的三种映像类型。要搞
清楚
映像结构,需要先了解下VxWorks的内存空间分配。所以我们先从框架入手。 1. 框架图 2. 内存空间分配 二、内核映像 根据应用场合不同,vxworks映像可以分成三类:可加载的映像、基于ROM的映像和驻留ROM映像。 1. 可加载的映像 在RAM中运行,不包含搬移程序,需要借助一些...
Java类加载机制的几个个阶段,加载、验证、准备、解析、
初始化
【jvm】
类加载阶段 1、加载 概述: 一个Java文件从编码完成到最终执行,一般主要包括两个过程:
编译
和运行,其中
编译
就是把我们写好的java文件,通过javac命令
编译
成字节码,也就是我们常说的.class文件,然后运行则是把
编译
声称的.class文件交给Java虚拟机(JVM)执行。而我们所说的类加载过程即是指JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程。 简单来说:加载指的是把class字节码文件从各个来源通过类加载器
装载
入内存中。 举个通俗点的????: JVM
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章