Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area。 栈的特点如下: 1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等) 2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等 ...
分类:
编程语言 时间:
2020-03-12 20:24:26
阅读次数:
92
1.内存模型以及分区。 内存模型主要由方法区、堆、栈、本地方法栈、程序计数器。 方法区:供各线程共享的运行时的内存区域。存储了类信息,运行时常量池等,还存放static变量。 堆:通过new关键字,创建对象都会使用到堆内存。存放所有new出来的对象,只保存对象本身,不保存对象的引用。 栈:程序运行时 ...
分类:
其他好文 时间:
2020-03-12 18:45:22
阅读次数:
71
JVM | 垃圾回收Java垃圾回收的概念垃圾回收器安全点和安全区域 Java垃圾回收的概念如何判断哪些是垃圾对象,引用计数法,根搜索算法哪些是GC RootsJVM栈中的引用方法区静态变量的引用JNI(即native方法)中的引用方法区(永久代)会发生GC吗,会回收哪些对象?方法区的垃圾回收主要回... ...
分类:
其他好文 时间:
2020-03-12 09:20:50
阅读次数:
72
运行时数据区: 在类加载阶段的第2,3步可以涉及有运行时数据,堆,方法区等名词。( 2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。3.在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口 ) 说白了就是类文件被类装载器装载进来之后 ...
分类:
其他好文 时间:
2020-03-10 15:37:30
阅读次数:
70
ClassLoader,类加载器子系统: 负责从文件系统或网络中读取class文件,class文件所在开头有特定的文件标识 ClassLoader只负责class文件的加载,是否能运行,则由Execution Engine决定 加载类的信息存放在一块称为方法区的内存空间。除了类的信息,方法区还可能会 ...
分类:
其他好文 时间:
2020-03-10 14:17:00
阅读次数:
53
JVM的内存划分: 方法区:是线程共享的,常量静态变量的JIT(即时编译器)编译后代码也在方法区存放。用来存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆得一个逻辑部分,但是他却有个别名Non-Heap(非堆),目的是为了与Java堆区 ...
分类:
其他好文 时间:
2020-03-09 01:25:48
阅读次数:
56
RLP(Recursive Length Prefix,递归长度前缀)是一种编码算法,用于编码任意的嵌套结构的二进制数据,它是以太坊中数据序列化/反序列化的主要方法,区块、交易等数据结构在持久化时会先经过RLP编码后再存储到数据库中。
分类:
其他好文 时间:
2020-03-07 14:41:28
阅读次数:
84
首先要说一下JVM内存空间分为五部分,分别是:方法区、堆、Java虚拟机栈、本地方法栈、程序计数器 方法区主要用来存放类信息、类的静态变量、常量、运行时常量池等,方法区的大小是可以动态扩展的, 堆主要存放的是数组、类的实例对象、字符串常量池等。 Java虚拟机栈是描述JAVA方法运行过程的内存模型, ...
分类:
其他好文 时间:
2020-03-07 12:58:31
阅读次数:
60
---方法区内存:在类加载的时候,class字节码代码段被加载到该内存空间中---栈内存(局部变量):方法代码段片段执行的时候,会给该方法分配内存空间,在栈内存中压栈---堆内存(实例变量):new的对象在堆内存中存储.publicclassHello{publicstaticvoidmain(String[]args){inta=100;intb=200;intres=sum(a,b);Syst
分类:
其他好文 时间:
2020-03-06 19:55:01
阅读次数:
66
题意: 作者喜欢观察动物,因此他购买了两个照相机,以拍摄森林中野生动物的视频,一台摄像机的颜色是红色,一台摄像机的颜色是蓝色。 从第1天到第N天,作者将拍摄N天的视频。森林可以分为M个区域,编号从1到M。他将通过以下方式使用相机: 在每个奇数天,将红色相机带到森林中并录制两天的视频。 在每个偶数天, ...
分类:
其他好文 时间:
2020-03-06 15:48:17
阅读次数:
75