一、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向 ...
分类:
编程语言 时间:
2017-07-31 16:27:54
阅读次数:
185
JVM 概念 类载入器子系统 装载 链接 初始化 JVM 内存模型 方法区Method Area 堆区Heap Area 栈区Stack Area 程序计数器Program Counter Register 本地方法栈Native Method Stacks 运行引擎 Java Native Int ...
分类:
其他好文 时间:
2017-07-31 14:31:17
阅读次数:
220
一、前言 讲这3个方法区别的文章太多了,但是大部分写的都很绕。本文试图从实践角度去讲这3个方法。 二、escape和它们不是同一类 简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。编码之后的效果是%XX或者%uXXXX这种形式。其中 A ...
分类:
Web程序 时间:
2017-07-31 13:21:42
阅读次数:
295
运行时常量池是方法区的一部分。class中除了有类的版本,字段,方法,接口等描述信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后存放在方法区的运行时常量池中。 Java虚拟机对class文件的每一部分(自然也包括常量池)的格式都有严重的规定,每一个字节用 ...
分类:
编程语言 时间:
2017-07-30 18:10:15
阅读次数:
101
有三种索引:ix,iloc,loc; 使用方法都是 __.ix[row, columns] 详细的见 pandas 文档。 需要注意的差别是: 1,ix方法 混合索引和位置下标(必须是整数),先考虑是否是在标签索引中,然后考虑是位置下标。如果是整数作为index,ix就按照索引标签选取。 loc方法 ...
分类:
其他好文 时间:
2017-07-30 13:47:37
阅读次数:
193
1.加载 虚拟机需要干三件事: ①、通过一个类的的全限定名来获取定义此类的二进制字节流(没有规定二进制字节流从那里获取,怎样获取,许多java技术也都建立在这基础上) ②将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构(将常量池转变成运行时常量池) ③在内存中生成一个代表这个类的java ...
分类:
其他好文 时间:
2017-07-29 12:57:36
阅读次数:
110
1、JVM管辖的内存大致分为三个逻辑部分:java栈(Heap)、java堆(JavaStack)和方法区(MethodArea)。在JVM启动时创建,关闭时全部回收。 栈、本地方法栈、程序计数器:以线程为粒度,每个线程拥有自己的部分。而堆和方法区被所有线程共享。 堆:运行时的数据区域,程序(线程) ...
分类:
编程语言 时间:
2017-07-29 00:55:41
阅读次数:
172
static关键字被static修饰的成员变量和成员方法独立于该类的任何对象,它不依赖类特定的实例,被类的所有实例共享。 当创建对象后,成员变量是存储在堆中的,而static成员变量和类的信息一起存储在方法区, 而不是在堆中。static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接 ...
分类:
其他好文 时间:
2017-07-28 23:40:38
阅读次数:
174
1 static关键字 4:内存分析 1:栈,堆、共享区 2:Demo.class加载近共享区 1:Demo类的main方法进栈 2:Person p1=new Person(); 1:Person.class 加载进方法区 2:堆内存开辟空间,实例变量进行默认初始化,显示初始化。 3:内存地址传给 ...
分类:
其他好文 时间:
2017-07-27 20:08:28
阅读次数:
305
分为以下几个运行时数据区: 程序计数器,java虚拟机栈,本地方法栈,java堆,方法区 程序计数器: 线程私有,记录正在执行的虚拟机字节码指令地址,执行本地方法则为空,是唯一一个java虚拟机内存中没有PutOfMemoryError情况 java虚拟机栈: 线程私有,生命周期也与线程相同,用于支 ...
分类:
编程语言 时间:
2017-07-27 18:20:59
阅读次数:
151