JVM
文章平均质量分 86
JVM相关文章
_whitepure
这个作者很懒,什么都没留下…
展开
-
JVM介绍
为什么要学习Jvm大部分Java开发人员,除了会在项目中使用到与Java平台相关的各种高精尖技术,对于Java技术的核心Java虚拟机了解甚少。一些有一定工作经验的开发人员,打心眼儿里觉得SSM、微服务等上层技术才是重点,基础技术并不重要,这其实是一种本末倒置的“病态”。如果我们把核心类库的API比做数学公式的话,那么Java虚拟机的知识就好比公式的推导过程。不要以钱为你的最终目标,当你把技术做到位的时候,你会发现你的薪资待遇、社会地位,都会自然而然的提升上来。不要本末倒置、急功近利。面试原创 2021-03-27 18:19:10 · 239 阅读 · 0 评论 -
内存泄漏、内存溢出等JVM中的相关概念
System.gc在默认情况下,通过System.gc()者Runtime.getRuntime().gc()的调用,会显式触发FullGC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。源码调用了Runtime.getRuntime().gc();方法运行垃圾收集器。调用GC方法意味着Java虚拟机要努力回收未使用的对象,以便使它们当前占用的内存能够快速重用。当控制从方法调用中返回时,Java虚拟机已经尽了最大努力从所有丢弃的对象中回收空间。调用System.gc()有效地等同于原创 2021-05-05 22:19:15 · 105 阅读 · 0 评论 -
深层次理解Java中的对象
对象实例化对象创建方式使用new关键子创建:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法;使用反射方式创建:使用Class的newInstance方法:在JDK9里面被标记为过时的方法,因为只能调用空参构造器;使用Constructor的newInstance(XXX):反射的方式,可以调用空参的,或者带参的构造器;使用clone():不调用任何的构造器,要求当前的类需要实现Cloneable接口中的clone接口;使用序列化:序列化一般用于原创 2021-04-17 16:12:53 · 298 阅读 · 0 评论 -
Java类加载机制介绍
类加载过程在Java中,类加载器把一个类装入JVM中,要经过以下步骤:加载、验证、准备、解析和初始化。其中验证,准备,解析统称为连接。这5个阶段一般是顺序发生的,但在动态绑定的情况下,解析阶段发生在初始化阶段之后。类加载器只负责class文件的加载,至于它是否可以运行,则由执行引擎(Execution Engine)决定。被加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量。类加载过程流程图:加载加载阶段是类原创 2021-03-28 15:44:00 · 90 阅读 · 0 评论 -
JVM中的程序计数寄存器介绍
Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。运行时数据区域包括程序计数寄存器虚拟机栈本地方法栈堆方法区其中:方法区、堆为线程共享;程序计数寄存器、虚拟机栈、本地方法栈 为线程私有。程序计数寄存器概述JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄原创 2021-03-30 21:06:39 · 201 阅读 · 0 评论 -
JVM中虚拟机栈详解
Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。运行时数据区域包括程序计数寄存器虚拟机栈本地方法栈堆方法区其中:方法区、堆为线程共享;程序计数寄存器、虚拟机栈、本地方法栈 为线程私有。虚拟机栈介绍Java虚拟机栈(Java Virtual Machine Stack),早期也叫Java栈。每个线程在创建时都会创建一个虚拟机栈原创 2021-04-05 17:38:21 · 98 阅读 · 0 评论 -
JVM中的本地方法栈
Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。运行时数据区域包括程序计数寄存器虚拟机栈本地方法栈堆方法区其中:方法区、堆为线程共享;程序计数寄存器、虚拟机栈、本地方法栈 为线程私有。本地方法栈概览Java虚拟机栈于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。本地方法栈,也是线程私有的。允许被实现成固定或原创 2021-05-07 18:18:43 · 97 阅读 · 0 评论 -
JVM中堆的分区、垃圾回收等详解
Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。运行时数据区域包括程序计数寄存器虚拟机栈本地方法栈堆方法区其中:方法区、堆为线程共享;程序计数寄存器、虚拟机栈、本地方法栈 为线程私有。堆堆的核心概念堆针对一个JVM进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的。一个JVM实例只原创 2021-04-08 21:52:59 · 83 阅读 · 0 评论 -
JVM中的方法区详解
title: “方法区”date: 2021-04-08draft: falsetags: [“Java”, “JVM”]slug: “jvm-method-area”Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qk09CvyW-1618395817019.原创 2021-04-17 13:39:12 · 133 阅读 · 1 评论 -
JVM中的直接内存
直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存区间。操作直接内存演示代码:public class MainTest { public static void main(String[] args) { ByteBuffer allocate = ByteBuffer.allocate(1024 * 1024 * 1024); System.out.println("直接内原创 2021-04-17 13:42:57 · 74 阅读 · 0 评论 -
JVM中的执行引擎
概述执行引擎是Java虚拟机核心的组成部分之一,属于JVM的下层,里面包括 解释器、及时编译器、垃圾回收器。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CisEiYea-1618896537854)(/myblog/posts/images/essays/执行引擎.png)]“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以原创 2021-04-21 11:25:32 · 107 阅读 · 0 评论 -
JVM中的本地方法接口
概念简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern “c” 告知c++编译器去调用一个c的函数。在定义一个native method时,并不提供实现体(有些像定义一个Java interface),因为其实现体是由非java语言在外面实现的。本地接口的作用是融合不同的编程语原创 2021-04-03 16:32:59 · 127 阅读 · 0 评论