一、对象类文件的序列换与反序列化 1.java.io.ObjectOutputStream;序列化JAVA对象到硬盘 2.java.io.ObjectInputStream;将硬盘中的数据“反序列化”到JVM内存中 Compile编译(java->class) DeCompile反编译(class- ...
分类:
编程语言 时间:
2020-03-25 01:17:19
阅读次数:
66
1.JVM体系结构 2. 类装载子系统 类装载子系统负责查找并装载类型,Java虚拟机有两种类装载器:启动类装载器(Java虚拟机实现的一部分)和自定义类装载器(Java程序的一部分)。类装载子系统负责定位和加载二进制class文件,并且保证加载的类的正确性,为类变量分配内存并初始化,以及帮助解析符 ...
分类:
其他好文 时间:
2020-03-23 15:23:26
阅读次数:
68
在JVM中,内存分为堆内存跟栈内存。他们二者的区别是: 当我们创建一个对象(new Object)时,就会调用对象的构造函数来开辟空间,将对象数据存储到堆内存中,与此同时在栈内存中生成对应的引用,当我们在后续代码中调用的时候用的都是栈内存中的引用。还需注意的一点,基本数据类型是存储在栈内存中。 初步 ...
分类:
其他好文 时间:
2020-03-23 11:20:01
阅读次数:
67
一.java程序的具体执行过程: 1.java源文件会被java编译器编译成字节码文件 2.然后由jvm中的类加载器加载各个类的字节码文件 3.加载完后,由jvm的执行引擎执行 备注:在执行的过程中jvm一段空间来存储数据:运行时数据区,也称jvm内存 二.根据jvm规范,jvm把内存划分为了如下几 ...
分类:
其他好文 时间:
2020-03-22 13:47:07
阅读次数:
59
Java内存模型(JMM)与线程安全 1:JMM其实是java虚拟机栈的一部分 2:主内存和工作内存:都属于Java虚拟机内存 主内存:主要对应于JVM内存区域中的堆内存中的对象实例数据部分 工作内存:主要对应于JVM内存区域中的虚拟机栈中的部分区域 主内存与工作内存的数据交换操作的过程(通过总线b ...
分类:
编程语言 时间:
2020-03-21 16:35:32
阅读次数:
69
运行时数据区 红色的:一个进程对应的一份,被一个进程里边所有的线程共用的 灰色的:一个线程对相应一份 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的J ...
分类:
编程语言 时间:
2020-03-12 18:24:39
阅读次数:
67
VM 概念模型 1:程序计数器(Program Counter Register) (1)比喻:可以看做为线程所执行的字节码的行号显示器 (2)与线程的关系:每个线程都有自己的程序计数器 (3)作用:存放当前线程正在执行的虚拟机字节码指令地址 2:虚拟机栈(VM Stack) 帧栈 (1) 释义:每 ...
分类:
其他好文 时间:
2020-03-11 01:09:53
阅读次数:
53
1.堆内存溢出 堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,当这些对象所占据空间超过最大堆容量时,就会产生OutOfMemeorgError的异常,堆内存溢出异常示例如下: public class ArrayDe ...
分类:
其他好文 时间:
2020-03-09 18:19:45
阅读次数:
70
JVM的内存划分: 方法区:是线程共享的,常量静态变量的JIT(即时编译器)编译后代码也在方法区存放。用来存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆得一个逻辑部分,但是他却有个别名Non-Heap(非堆),目的是为了与Java堆区 ...
分类:
其他好文 时间:
2020-03-09 01:25:48
阅读次数:
56
首先要说一下JVM内存空间分为五部分,分别是:方法区、堆、Java虚拟机栈、本地方法栈、程序计数器 方法区主要用来存放类信息、类的静态变量、常量、运行时常量池等,方法区的大小是可以动态扩展的, 堆主要存放的是数组、类的实例对象、字符串常量池等。 Java虚拟机栈是描述JAVA方法运行过程的内存模型, ...
分类:
其他好文 时间:
2020-03-07 12:58:31
阅读次数:
60