原文地址:http://yhjhappy234.blog.163.com/blog/static/3163283220115573911607 我们知道java运行的是这样的,首先java编译器将我们的源代码编译成为字节码,然后由JVM将字节码load到内存中,接着我们的程序就可以创建对象了,我们知道JVM将字节码load到内存之后将将建立内存模型(JVM的内存模型我们将在稍后阐述),那JVM是怎么将类load到内存中的呢?对了,是通过Classloader,今天我们就来深入探讨一下Classl…
1.遇到new,getstatic,putstatic,invokestatic这4条字节码指令时,类如果没初始化就会被初始化,创建对象,读取或设置静态字段,调用静态方法. 2.反射 3.子类初始化前会先初始化父类 4.包含main方法的类,虚拟机启动时会先初始化该类  5.使用jdk的动态语言支持时(不明) 这五种场景被称为主动引用.   被动引用: class SuperClass{ static{ syso("super init"); } public static int v…
原文地址:http://yhjhappy234.blog.163.com/blog/static/31632832201152555245584/?suggestedreading&wumii 类的加载的最终产品是位于堆(heap)中的class对象,Class对象封装了类在方法区内的数据结构并向Java程序员提供访问方法区内的数据结构的接口.而反射就像一面镜子一样可这个接口是反射的接口,所以我们可以通过反射获得这个类的方法和属性,包括私有的方法和属性! 下面我们来详细的介绍一下类加载器 类的加…
每个类编译后产生一个Class对象,存储在.class文件中,JVM使用类加载器(Class Loader)来加载类的字节码文件(.class),类加载器实质上是一条类加载器链,一般的,我们只会用到一个原生的类加载器AppClassLoader,它只加载Java API等可信类,通常只是在本地磁盘中加载,这些类一般就够我们使用了.如果我们需要从远程网络或数据库中下载.class字节码文件,那就需要我们来挂载额外的类加载器. 一般来说,类加载器是按照树形的层次结构组织的,每个加载器都有一个父类加载…
了解类载入全过程,有助于了解JVM执行过程,以及更深入了解java动态性(解热部署,动态载入),提高程序灵活性. 类载入全过程: JVM将class文件字节码文件载入到内存中.并对数据进行校验解析和初始化,终于形成能够直接使用的java类型的过程. 载入 将class文件字节码内容载入到内存中,并将这些静态数据转换成方法区中的执行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的訪问入口. 链接 将Java类的二进制代码合并到JVM的执行状态之中的过程.…
对类的使用方式分为:主动使用.被动使用 所有的java虚拟机实现必须在每个类或接口被java程序"首次主动使用"时才初始化他们 ps:被动使用不会初始化类,但是有可能会加载类(JVM规范里没有说明) 并且,如果在加载的过程中,遇到了.class文件的缺失或者存在错误,类加载器只会在首次主动使用它们时才会报错,如果一直没有主动使用,则不会报错 主动使用: 创建类的实例.访问某个类或者接口的非final类型的静态变量/对该静态变量赋值.调用类的静态方法.反射.初始化一个类的子类.jvm启动…
虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个周期包括:加载(Loading).验证(Verification).准备(Preparation).解析(Resolution).初始化(Initialization).使用(Using).卸载(Unloading)七个阶段.其中验证.准备.解析三个部分统称为链接(Linking),这七…
[前言] [本篇为原创]网络遥感,Network telemetry,为什么叫“telemetry”呢?我个人的理解是将网络中的数据进行一种“采集”,也就是实际上是一种网络数据的采集手段.由于工作需要,接触了一些网络遥感方面的技术,本篇文章就来谈一谈主流的网络遥感技术.本篇文章会介绍传统网络中基于“流”的遥感技术,以思科的Netflow技术为代表和IETF的IPFIX标准,再到最近比较流行的INT技术,INT技术会着重介绍思科的IOAM和华为的PBT两种. [场景] 网络遥感是一种网络信息采集技…
首先建议把广泛使用的"主动错误"和"被动错误"概念换成"主动报错"和"被动报错". 1. 主动报错站点 只要检查到错误,它立即"主动地"发出错标识.所谓"出错标识",它本身就是一个"错误的位序列"(连续的6个显性位,不满足 CAN 协议的"最多5个连续的同性位"要求),目的是"主动地"告诉大家:即使你们没有发现"刚才我…
要实现wifi上的探针模块,简单了了解了802.11中的各种帧,对一些帧的发送频率和方式也有简单了解.不过了解的都不够细致.只是简单知道手机打开wifi后回不停的向外发送probe request这个帧,然后也在不停的监听当前信道上AP广播过来的beacon帧.这里详细介绍一下802.11中的主动扫描和被动扫描. 主动扫描和被动扫描是在手机的角度来说,手机为了发现AP,必须进行扫描,通过扫描得到AP的信息,然后才能去连接. 主动扫描 主动扫描是指手机(这里的sta就用手机代替啦,其实可以是很多种…