
JVM
文章平均质量分 95
jvm学习
此生辽阔
这个作者很懒,什么都没留下…
展开
-
JVM-垃圾回收
什么是垃圾垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候回收?如何回收?垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,Java的垃圾收集机制仍然在不断的演进中,不同大小的设备、不同特征的应用场景,对垃圾收集提出了新的挑战,这当然也是面试的热点。垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要原创 2021-10-31 22:10:34 · 284 阅读 · 0 评论 -
StringTable
String的不可变性String:字符串,使用一对""引起来表示。String声明为final的,不可被继承String实现了Serializable接口:表示字符串是支持序列化的。实现了comparable接口:表示String可以比较大小String在jdk8及以前内部定义了final char [ ] value用于存储字符串数据。jdk9时改为byte[]关于jdk9中String的改变可以查看下面的网址http://openjdk.java.net/jeps/254大概意思就是字原创 2021-05-06 16:46:49 · 143 阅读 · 0 评论 -
执行引擎
执行引擎的作用及工作过程概述执行引擎负责把放在内存中的字节码文件翻译成机器码被操作系统识别执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因原创 2021-05-05 21:27:53 · 146 阅读 · 0 评论 -
对象的实例化内存布局与访问定位
new的对象放在堆空间对象所属的类型信息放在方法区方法中的局部变量放在栈空间new的对象如何把这三块区域结合在一起?对象的实例化美团:对象在VM中是怎么存储的?对象头信息里面有哪些东西?妈蚁金服:二面: java对象头里有什么①创建对象可以new,一般是通过构造器,如果是单例模式这总,就调用静态方法,构造器私有,返回内部创建的对象。变形2:构造器私有化了,也没有静态方法,可以使用xxxBuilder,xxxFactory(内部有相应的静态方法)。②Class的newInstance:反原创 2021-05-05 15:51:14 · 143 阅读 · 1 评论 -
运行时数据区(方法区)
运行时类本身放在方法区到对象类型数据的指针指明这个对象到底是由哪个类new出来的方法区的理解Java虚拟机规范https://docs.oracle.com/javase/specs/jvms/se8/html/The Java Virtual Machine has a method area that is shared among all Java Virtual Machine threads. The method area is analogous to the storage.原创 2021-05-04 20:04:51 · 240 阅读 · 0 评论 -
运行时数据区(堆)
主要存对象、数组一个进程的所有线程共享堆和方法区一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。(逻辑上的内存可以建立一个映射表,把实际上不连续的内存看做是连续的)所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区( ThreadLocal Allocati原创 2021-05-02 21:00:48 · 259 阅读 · 0 评论 -
运行时数据区(程序计数器、虚拟机栈、本地方法栈)
运行时数据区概述内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局。Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机(虚拟机是一个进程)启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区原创 2021-05-01 20:49:38 · 404 阅读 · 1 评论 -
类加载子系统
字节码文件的加载分为3个过程 加载->链接->初始化加载:涉及到加载器,引导类加载器 扩展类加载器 应用类加载器链接:分为验证、准备、解析三个环节初始化:静态变量的显式初始化接下来针对每一个字节码文件,把相应的类或者接口加载进来了运行时数据区:PC寄存器(程序计数器,一个线程1份) 虚拟机栈(每个线程用的栈里面的一个一个的结构称为栈帧Stack Frame,栈帧又分为很多内部结构) 方法区(存放类的信息,常量,方法信息) 本地方法栈(本地方法的调用)堆(java.原创 2021-04-29 14:50:22 · 195 阅读 · 2 评论 -
JVM与JAVA体系结构
参考视频:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)常用的jdk版本:jdk8/jdk11jvm是基于栈的架构模型你是否也遇到过这些问题?运行着的线上系统突然卡死,系统无法访问,甚至直接oOM !想解决线上JVM GC问题,但却无从下手。新项目上线,对各种JVM参数设置一脸茫然。每次面试之前都要重新背一遍JVM的一些原理概念性的东西,然而面试官却经常问你在实际项目中如何调优JVM参数,如何解决GC、OOM等问题,一脸懵逼。我们用各种框架,调用java的API最终写出原创 2021-04-27 16:29:54 · 203 阅读 · 0 评论