JVM
文章平均质量分 81
JVM
一点莹
抬头是山,路在脚下
展开
-
JVM学习笔记(六)JMM和Volatile
JMMJMM(Java Memory Model的缩写)是一种java内存模型。它类似于缓存一致性协议,用于定义数据读写的规则。JMM定义了线程工作内存和主内存的一种抽象关系,线程中的共享对象存在于主内存中,每个线程都有一块私有的本地内存。解决共享对象可见性问题,即线程中修改数据立马同步到主线程中,其它线程复制时可以得到最新的数据:volilate和synchronize关键词。JMM数据同步模型如下图。...原创 2021-03-09 22:14:26 · 130 阅读 · 0 评论 -
JVM学习笔记(五)GC 垃圾回收机制
1.GC 垃圾回收机制JVM堆里面可能存在GC的地区有以下几种新生代幸存区(from、to,对应前文的幸存0区和幸存1区,交替转换)老年区GC:分为轻GC(普通GC)和重GC(全局GC)程序在运行过程中,会产生大量的内存垃圾(一些没有引用指向的内存对象都属于内存垃圾,因为这些对象已经无法访问,程序用不了它们了,对程序而言它们已经死亡),为了确保程序运行时的性能,java虚拟机在程序运行的过程中不断地进行自动的垃圾回收(GC)。2.垃圾的标记:在GC进行垃圾回收时,首先要判断什么是垃原创 2021-03-09 15:29:20 · 126 阅读 · 0 评论 -
JVM学习笔记(四)类加载的过程
通过之前的学习,我们知道:类加载就是根据一个类的全限定名,将其字节码文件 加载到JVM内部,并创建java.lang.Class对象实例。其实,一个类的加载过程应包括:加载,连接(验证,准备,解析),初始化加载:通过类加载器,根据一个类的全限定名,将该类的字节码文件加载到JVM中(存储在方法区内),再创建java.lang.Class对象实例,由于JVM规范中并没有要求Class对象实例应该是否应该存放在堆区中,在HotSpot VM中将Class对象实例存储在方法区内。该方法区中的Class对象实例原创 2021-01-22 16:07:30 · 91 阅读 · 0 评论 -
JVM学习笔记(三)栈,堆
栈栈是一种数据结构,常用来和队列相比较。栈是先进后出,队列是先进先出。栈内存主管程序的运行,生命周期和线程同步。线程结束,栈内存也就释放了,不存在垃圾回收的问题。栈里面存放的有8中基本类型、对象的引用、实例的方法。栈的示意图如下,每执行完一个方法就会弹出一次,知道所有都弹出,线程结束。有时会出现栈溢出的情况,是因为栈空间被占满,对应的代码如下:public class Test { //栈溢出测试 public static void main(String[] args) {原创 2021-01-21 23:47:42 · 114 阅读 · 0 评论 -
JVM学习笔记(二)沙箱安全机制,Native、方法区
沙箱安全机制Java安全模型的核心就是Java沙箱(sandbox)。沙箱是一个限制程序运行的环境。沙箱机制就是将 Java 代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。沙箱主要限制系统资源访问,那系统资源包括什么?——CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。所有的Java程序运行都可以指定沙箱,可以定制安全策略。在Java中将执行程序分成本地代码和远程代码两种,本原创 2021-01-21 00:34:42 · 270 阅读 · 0 评论 -
JVM学习笔记(一)体系结构,类加载器,加载机制
JVM体系结构JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM体系结构简图:JVM是介于java程序和操作系统之原创 2021-01-20 18:45:57 · 108 阅读 · 0 评论