JVM 概念
类加载器子系统
装载
链接
初始化
JVM 内存模型
方法区Method Area
堆区Heap Area
栈区Stack Area
程序计数器Program Counter Regis...
分类:
其他好文 时间:
2017-03-07 11:57:11
阅读次数:
241
大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) , VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack ( 本地方法栈 ),其 ...
分类:
其他好文 时间:
2017-03-06 20:49:25
阅读次数:
134
1。start(): 我们先来看看API中对于该方法的介绍: 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。 多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启 ...
分类:
编程语言 时间:
2017-03-06 18:28:26
阅读次数:
184
方法区在一个jvm实例的内部,类型信息被存储在一个称为方法区的内存逻辑区中。类型信息是由类加载器在类加载时从类文件中提取出来的。类(静态)变量也存储在方法区中。 jvm实现的设计者决定了类型信息的内部表现形式。如,多字节变量在类文件是以big-endian存储的,但在加载到方法区后,其存放形式由jv ...
分类:
其他好文 时间:
2017-03-05 17:47:31
阅读次数:
234
JVM内存模型以及分区 JVM内存分为: 1.方法区:线程共享的区域,存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据 2.堆:线程共享的区域,存储对象实例,以及给数组分配的内存区域也在这里。 3.虚拟机栈:线程隔离的区域,每个线程都有自己的虚拟机栈,生命周期和线程相同。虚 ...
分类:
编程语言 时间:
2017-03-04 21:08:11
阅读次数:
196
1。类的加载过程 a。加载-链接-初始化-使用-卸载 加载: 查找并加载类的二进制数据 链接: 验证类的正确性,为类的静态变量分配内存,并将其初始化为默认值,把类的符号引用转换为直接引用。 初始化: 类加载: 把class文件读入内存中,放在方法区内,然后在堆区创建一个class对象,用来封装类在方 ...
分类:
其他好文 时间:
2017-03-02 18:21:10
阅读次数:
165
概述 一个对象本身的内在结构需要一种描述方式,这个描述信息是以字节码的方法存储在方法区中的。Class本身就是一个对象,都以KB为单位,如果new Integer()为了表示一个数据就占用KB级别的内存就有点不值了,下面讲解JVM是如何做的。为了表示对象的属性、方法等信息,不得不需要结构描述。Hot ...
分类:
其他好文 时间:
2017-03-02 17:23:08
阅读次数:
253
1.string String是不可变类: String不是基本数据类型,而是一个对象,并且是final类型的,不可变的。(public static class String) 例如: 代码:String text = "a"; text = "b"; String不是不可变的么?为什么可以这样用 ...
分类:
其他好文 时间:
2017-03-01 12:47:57
阅读次数:
207
java程序运行期数据区 每个java虚拟机都有一个方法区和一个java堆,它们由该java虚拟机中所有线程共享的 对于基本类型的变量,java虚拟机将其放在栈中 对于引用类型的变量,引用变量本身放在java栈中,而引用所指向的对象放在java堆中 运算符和表达式 1.增量和减量运算符:++,-- ...
分类:
其他好文 时间:
2017-02-28 15:41:09
阅读次数:
132
一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。 ...
分类:
编程语言 时间:
2017-02-28 15:35:31
阅读次数:
203