![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
OVO_LQ_Start
一个弱小的菜鸟在瑟瑟发抖
展开
-
jvm(7)GC算法
回收算法1、标记清除算法标记-清除算法分为标记和清除两个阶段。该算法首先从根集合进行扫描,对存活的对象对象标记,标记完毕后,再扫描整个空间中未被标记的对象并进行回收,如下图所示标记-清除算法的主要不足有两个:效率问题:标记和清除两个过程的效率都不高;空间问题:标记-清除算法不需要进行对象的移动,并且仅对不存活的对象进行处理,因此标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。2、复制原创 2020-11-09 10:56:24 · 133 阅读 · 0 评论 -
JVM(6)堆
堆JAVA堆内存是如何划分的,如图:JVM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Generation),非堆内存就一个永久代(Permanent Generation)。年轻代又分为Eden和Survivor区。Survivor区由FromSpace和ToSpace组成。Eden区占大容量,Survivor两个区占小容量,默认比例是8:1:1。堆内存用途:存放的是对象,垃圾收集器就是收集这些对象,然后根据GC算法回收。非堆内存用途:永原创 2020-11-08 18:31:07 · 136 阅读 · 1 评论 -
JVM(5)栈
栈是什么1.栈(stack)又名堆栈,一个数据集合,可以理解为只能在一端进行插入或删除操作的列表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。2.栈就是一个桶,后放进去的先拿出来,它下面本来有的东西要等它出来之后才能出来(先进后出)3.栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域,该区域具有FIFO的特性,在编译的时候可以指定需要的Stack的大小。4.栈的基本操作: 进栈(压栈):pus原创 2020-11-08 12:25:38 · 116 阅读 · 0 评论 -
JVM(4)native 关键字,pc寄存器与方法区
native关键字1.native是什么简单地讲,一个Native Method就是一个java调用非java代码的接口,即调用底层的c 与c++(为了能在那个c,c++横行的年代,不得不能够调用)。换种说法就是,凡是带了native关键字,java语言就作用不到了。2.怎么调用c,c++在jvm中单独开辟了一块内存native method stack,用来标识native方法,native方法通过调用本地方法接口(JNI)来调用本地方法库,即调用c或则c++。3.什么是JNIJNI:java原创 2020-11-08 11:05:14 · 806 阅读 · 0 评论 -
JVM(3)沙箱安全机制
什么是沙箱?Java安全模型的核心就是Java沙箱(sandbox),什么是沙箱?沙箱是一个限制程序运行的环境。沙箱机制就是将 Java 代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。沙箱主要限制系统资源访问,那系统资源包括什么?——CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。 所有的Java程序运行都可以指定沙箱,可以定制安全策略。组成沙箱的基本组件:字节码校验器(b原创 2020-11-08 10:38:53 · 364 阅读 · 0 评论 -
JVM(2)类加载器与双亲委派机制
类加载器运行图:类加载器是负责将可能是网络上、也可能是磁盘上的class文件加载到内存中。并为其生成对应的java.lang.class对象。一旦一个类被载入JVM了,同一个类就不会被再次加载。那么怎样才算是同一个类?在JAVA中一个类用其全限定类名(包名和类名)作为其唯一标识,但是在JVM中,一个类用其全限定类名和其类加载器作为其唯一标识。也就是说,在JAVA中的同一个类,如果用不同的类加载器加载,则生成的class对象认为是不同的。类加载的分类当JVM启动时,会形成由三个类加载器组成的初始类加原创 2020-11-07 19:08:20 · 106 阅读 · 0 评论 -
JVM(1)JVM体系结构
体系结构原创 2020-11-07 17:42:12 · 87 阅读 · 0 评论