如题,本文的宗旨既是透过对象的生命周期,来梳理JVM内存结构及GC相关知识,并辅以AOP及双亲委派机制原理,学习不仅仅是海绵式的吸收学习,还需要自己去分析why,加深对技术的理解和认知,祝大家早日走上自己的“成金之路”。
Java对象的创建
本部分,从攻城狮编写.java文件入手,详解了编译、载入、AOP原理。
读过《程序员的自我修养》的朋友,对程序的编译及执行会有一个很清晰的认识:编译其实就是将人类能理解的代码文件转译为机器/CPU能执行的文件(包括数据段、代码段),而执行的过程,则是根据文件头部字节的标识(简称魔数),映射为对应的文件结构体,找到程序入口,当获取到CPU执行权限时,将方法压栈,执行对应的指令码,完成相应的逻辑操作。
而对应.java文件,则先需要使用javac进行编译,编译后的.class文件,此文件将java程序能读懂的数据段和代码段,之后用java执行文件,既是载入.class文件,找到程序入口,并根据要执行的方法,不停的压栈、出栈,进行逻辑处理。
class文件载入过程
加载
在加载阶段,虚拟机需要完成以下三件事情:
通过一个类的全限定名来获取其定义的二进制字节流。
将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口。
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26