
JVM
文章平均质量分 91
关于JVM的基本
LatteCJZ
想要的东西都很贵,只能不断地努力奔跑
同是风华正茂,怎可甘拜下风
展开
-
JMM(Java Memory Model)
JMM1.什么是JMM?JMM:(Java Memory Model 的缩写)JAVA 内存模型2.作用是什么?作用:缓存一致性协议,用于定义数据读写规则JMM定义了线程工作内存和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory)JMM规定了内存主要划分为主内存和工作内存两种。此处的主内存和工作内存跟JVM内存划分(堆、栈、方法区)是在不同的层次上进行的,如果非要对应起来,主内存对应的是Java堆中的对象实原创 2021-03-28 22:38:53 · 316 阅读 · 0 评论 -
GC垃圾回收
GC垃圾回收为自动,手动只能提醒GC作用于堆+方法区GC大部分针对新生代轻GC ----- 普通GC重GC ----- 全局GCGC算法复制算法 —GC算法-复制算法该算法将内存平均分成两部分,然后每次只使用其中的一部分,当这部分内存满的时候,将内存中所有存活的对象复制到另一个内存中,然后将之前的内存清空,只使用这部分内存,循环下去幸存区01, from…to…, 0和1互相不断交换,进行gc进行复制算法若一直没有死进入到养老区优点:实现简单,不产生内存碎片缺点:浪费一原创 2021-03-28 22:09:05 · 252 阅读 · 0 评论 -
JVM之堆
堆核心概述一个JVM实例值存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候就被创建了,其空间大小也就确定了,是JVM管理的最大一块内存空间。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区(TLAB,Thread Local Allocation Buffer)。《Java虚拟机规范》中对Java堆的描述是:所有的对象实例以及数组都应当在运行时分配在堆上(但并不是原创 2021-03-28 18:03:04 · 137 阅读 · 0 评论 -
JVM之方法区与栈
JVM之方法区与栈一、方法区所有线程共享静态变量,常量,类信息(构造方法,接口定义)运行时的常量池也存在方法区中,但是实例变量存在堆内存中,和方法区无关注意:方法区是被所有线程共享,所有字段和方法字节码,以及一些特殊方法,如构造函数,接口代码也在此定义,简单说,所有定义的方法的信息都保存在该区域,此区域属于共享区间;静态变量、常量、类信息(构造方法、接口定义、普通方法)、运行时的常量池存在方法区中,但是实例变量(普通变量)存在堆内存中,和方法区无关方法区:绝对不是放方法的地方,他是存储原创 2021-03-28 17:08:03 · 764 阅读 · 0 评论 -
本地方法栈与PC寄存器
本地方法栈与PC程序计数器一、本地方法栈1.Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法(一般非Java实现的方法)的调用2.本地方法栈,也是线程私有的。3.允许被实现成固定或者是可动态拓展的内存大小。(和Java虚拟机栈在内存溢出方面情况是相同的)如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个StackOverFlowError异常。如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够原创 2021-03-28 16:47:01 · 206 阅读 · 0 评论 -
沙箱安全机制与Native
沙箱安全机制与Native一、沙箱安全机制Java安全模型的核心就是Java沙箱(sandbox) , 什么是沙箱? 沙箱是一个限制程序运行的环境。沙箱机制就是将Java代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。 沙箱主要限制系统资源访问,那系统资源包括什么? CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。 所有的Java程序运行都可以指定沙箱,可以定制安原创 2021-03-28 16:36:22 · 240 阅读 · 0 评论 -
JVM之类加载子系统与双亲委派机制
JVM之类加载子系统与双亲委派机制一、类加载子系统1.类加载子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识,JVM并不是通过检查文件后缀是不是.class来判断是否需要加载的,而是通过文件开头的特定文件标志即16进制CA TE BA BE;2.加载后的Class类信息存放于一块成为方法区的内存空间。除了类信息之外,方法区还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)来一张经典的JVM内存结原创 2021-03-28 15:58:02 · 160 阅读 · 0 评论 -
JVM介绍
JVM介绍1.方法区和堆区是所有线程共享的内存区域;而java栈、本地方法栈和程序计数器是运行时线程私有的内存区域。2.Java栈又叫做jvm虚拟机栈3.方法区(永久代)在 jdk8 中又叫做元空间 Metaspace方法区用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器(JIT编译器,英文写作Just-In-Time Compiler)编译后的代码等数据。 虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做 Non-Heap(非堆),目的应该是与原创 2021-03-28 14:31:21 · 138 阅读 · 0 评论