<Java虚拟机原理图解> 1.1.class文件基本组织结构 关于变量的几个叫法: 局部变量/全局变量:很好区分根据所在位置. 类变量:静态的全局变量. 类常量:全局的final修饰的变量 静态常量:static final 的字段 常量:这个有几种说法: ,final 修饰的变量 ,基本类型和字面值(比如变量,方法,类的名字)也被称为常量(一般在字节码) 简单来说:class文件结构是魔数.副版本号.主版本之后,常量池等: magic:魔数,文件类型是字节码的一个数字标志,以便jvm识别.…
一.常量池的内容 一个java类中定义的很多信息都是由常量池来维护和描述的,可以将常量池看作是class文件的资源仓库,比如java类中定义的方法与变量信息.常量池中主要存储两类常量:字面量(文本字符串,final的常量)与符号引用(类和接口的全限定名,字段的名称和描述符,方法的名称和描述符 一.常量池的结构 二.常量池的分析 常量池(也称常量表):主版本号之后就是常量池的开始位置:java类所对应的常量池主要由常量池数量和常量池数组两部分组成,常量池数量是主版本号之后的两个字节:常量池数组在常…
JVM高级特性与实践(五):实例探究Class类文件 及 常量池 JVM高级特性与实践(六):Class类文件的结构(访问标志,索引.字段表.方法表.属性表集合) JVM高级特性与实践(七):九大类字节码指令集(实例探究 )…
文章来自:http://www.hoohack.me/2016/02/04/phps-source-code-for-php-developers-ch 原文:http://blog.ircmaxell.com/2012/03/phps-source-code-for-php-developers.html 作为一个开发者,我发现在我的日常工作中越来越多地查看PHP的源码.在为了弄清楚奇怪的边界问题和为什么某些问题应该发生的却没有发生而去理解背后究竟发生了什么事情的时候非常有用.在文档缺失.不完…
前言        古人常说,“熟读唐诗三百首,不会作诗也会吟”,说明了大量阅读诗歌名篇对学习作诗有非常大的帮助.做开发也一样,Android源码是全世界最优秀的Android工程师编写的代码,也是Android开发中绝对的权威所在.Android系统开源,且占据了当今手机系统世界的绝大部分江山,各大手机厂商要做手机系统定制,就必须对Android系统源码非常熟悉,这就要求他们的工程师们去熟读源码.即使是纯第三方App的开发者,要想成为Android开发真正的行家里手,也必须对系统源码有一定的研…
java集合树状结构及源码 最近一直想看一下java集合的源码,毕竟平时用的比较多,但总是感觉是跟着习惯new出来一个对象,比如ArrayList,HashMap等等,所以就简单的看了一下,了解了一下各个集合的实现的基本原理,看源码还挺费劲的,也是了解个大概意思吧,做了一下归纳和重点,留着以后看看: 集合树状结构,上图, Collection: Map: 大家自己要看的话,建议按照这个顺序来看,一个一个的去研究这些类, 自己在看的过程中做了几个word,是源码+一些重点提示,需要的看一下,有什么…
[源码解析] Pytorch 如何实现后向传播 (2)---- 引擎静态结构 目录 [源码解析] Pytorch 如何实现后向传播 (2)---- 引擎静态结构 0x00 摘要 0x01 Engine 0x02 GraphRoot 2.1 构建 2.2 作用 0x03 GraphTask 3.1 定义 3.2 outstanding_tasks_ 3.2.1 任务结束 3.2.2 增加 3.2.3 递减 3.3 keep_graph 3.4 dependencies_ 3.5 not_ready…
前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine  ,既然是虚拟机,他终归要运行在物理机上 在操作系统中体现出来的也就是一个进程 操作系统会给他分配资源,割一块内存作为他的地盘 class文件是静态的,想要运行程序,JVM需要将class文件中的信息加载到加载到他的地盘 然后处理他可以处理的数据类型的数据   JVM将这块内存按照功能进行了更细的划分,不过终究是一个…
首先说明一下,本文是转载自: http://www.cnblogs.com/clover-toeic/p/3853132.html 博客园用的少,不知道怎么发布转载文章,只能暂时这样了. 引言 考虑下面的结构体定义: typedef struct{ char c1; short s; char c2; int i; }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址是3,i的地址是4. 现在,我们编写一个简单的程序: int main(v…
JVM的知识这里总结的很详细:https://github.com/doocs/jvm/blob/master/README.md,因此在本博客也不会再对其中的东西重复总结了. 现在很多文章关于JVM内存结构的说法模糊不清,这里记录一下以前的一些比较模糊的JVM相关概念的重新认识.都是经过多处考证对比的. MetaSpace代替Perm Gen 即元空间代替了永久代,所以JVM关于永久代的参数也都作废了,取而代之的是关于MetaSpace空间的参数.而且Mete Space是属于直接内存.示意图…