JVM

JVM->Java Virtual Machine:Java虚拟机,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

基本认知:

1.JVM是用于运行Java代码的假象计算机,主要有一套字节码指令集,一组寄存器,一个栈,一个垃圾回收,堆 和 一个存储方法域。

2.JVM运行在操作系统之上,与硬件没有直接的交互。

Java程序执行过程:

1.编译->源文件由编译器编译成字节码[ByteCode] Java 源文件—->编译器—->字节码文件

2.运行->字节码由java虚拟机解释运行字节码文件—->JVM—->机器码

Java类的加载步骤:

1.加载->主要是完成3个阶段的提交:通过类的全限定名来获取定义类的二进制字节流

将字节流所代表的静态存储结构转化为方法区的运行时数据结构

在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。

2.验证->四个阶段的检验动作:文件格式验证

元数据验证

字节码验证

符号引用验证

3.准备->为类变量(static)分配内存并设置类变量的初始值。

4.解析->将常量池内的符号引用转为直接的引用

5.初始化->按照static块和static变量在文件中的出现顺序,合并到()方法中。实例变量由()函数赋值。

JVM线程实体:

JVM线程->程序执行过程中的一个线程实体,JVM 允许一个应用并发执行多个线程。

从此,我们应该意识到,在Java中,当提到线程就应该是指JVM线程和Java线程。其中JVM线程指的是Hotspot JVM 后台运行的系统线程,而且Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系。

⚠️[注意事项]:

[1].当线程本地存储、缓冲区分配、同步对象、栈、程序计数器等准备好以后,就会创建一个操作系统原生线程。

[2].Java 线程结束,原生线程随之被回收。操作系统负责调度所有线程,并把它们分配到任何可用的 CPU 上。

[3].当原生线程初始化完毕,就会调用 Java 线程的 run() 方法。当线程结束时,会释放原生线程和 Java 线程的所有资源

特别需要知道的是,Hotspot JVM 后台运行的系统线程主要是:

虚拟机线程->VM thread:等待 JVM 到达安全点操作出现。这些操作必须要在独立的线程里执行,因为当堆修改无法进行时,线程都需要 JVM 位于安全点。这些操作的类型有:stop-theworld垃圾回收、线程栈 dump、线程暂停、线程偏向锁(biased locking)解除。

周期性任务线程->负责定时器事件(也就是中断),用来调度周期性操作的执行

GC线程->支持 JVM 中不同的垃圾回收活动

编译器线程->在运行时将字节码动态编译成本地平台相关的机器码

信号分发线程->程接收发送到 JVM 的信号并调用适当的 JVM 方法处理

JVM内存

本文由博客一文多发平台 OpenWrite 发布!

java编程 内存_Java编程技术之浅析JVM内存相关推荐

  1. java split()方法_Java编程性能优化一些事儿

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Smile and stop complaining about the t ...

  2. java软件自学_Java编程自学软件下载

    有一些用户在下载软件时没有仔细查看软件的下载量及软件评论什么的,导致下载的软件总是出现各种问题,其实,你只要看看这款软件的评论及下载量,你就可以知道这款软件是不是好软件,也确实是太多的软件不值得去下载 ...

  3. java基础深入_java编程基础之方法深入

    大纲 方法入门 概述 前讲解的循环操作,可以解决的是代码重复的问题,但是此时的重复的代码必须是有规律的.那循环操作,能解决所有的代码重复吗?答案肯定是不行的,比如针对于某一种功能的重复操作,循环就无法 ...

  4. java没思路_Java编程没思路写不出代码怎么办

    成功不是你想要就能得到的,而是需要你不断努力争取的.时间飞逝转眼间已经学习java编程近一个月了.从零基础到现在能够自己独立完成一段完整的代码,成就感驱使着我学习更多的知识,做出更加优秀的作品. 1. ...

  5. Java编程思考_java编程的总结与思考

    java编程的总结与思考 可以用BlockingQueue来实现生产者-消费者并发模型(下一节中有介绍),当然在Java 5以前也可以通过wait和notify来实现线程调度,比较一下两种代码就知道基 ...

  6. java语言编程基础_Java编程基础02——Java语言基础

    1_(常量的概述和使用)* A:什么是常量(constant) 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常 ...

  7. java 数据保存内存_java中的各种数据类型在内存中存储的方式 一

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  8. java joptionpane调整大小_JAVA应用性能监控之JVM层GC调优

    1. JVM内存结构 1.1 运行时数据区 程序计数器PC Register:JVM支持多线程同时执行,每一个线程都有自己的PC Register,线程正在执行的方法叫做当前方法,如果是java代码, ...

  9. java jvm 内存参数_深入详解JVM内存模型与JVM参数详细配置

    对于大多数应用来说,Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块.Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建. JVM内存结构 由上图可以清楚的看到 ...

最新文章

  1. Cell封面:王二涛组在丛枝菌根共生“自我调节”研究中取得重大进展(视频+漫画解读)...
  2. Windows Media Player 损坏提示“出现了内部应用程序错误解决方法
  3. 第九章 Django框架——csrf请求伪造和csrf_token使用
  4. 数据结构-----栈
  5. linux touch 学习
  6. SAP的标准对话框函数
  7. nacos mysql8.0修改
  8. ajax从mysql提取数据在html中_提取图片中数据的科研利器
  9. 【cudnn】cudnn 安装
  10. 海马体what where记忆推理模型
  11. chrome91 后 SameSite by default cookies 不对外开放 解决方案
  12. 风雨秋招路-CV太难了-记得复盘
  13. 对话Ruby创始人松本行弘、阿里高级技术专家朴灵!
  14. 筱筱看博客(uni-app、mumu模拟器、真机测试)
  15. UMLChina公众号文章精选(20220602更新精选)
  16. 《道德经》「人法地 地法天 天法道 道法自然」
  17. 微信图片服务器逻辑,关于图片上传原图会被压缩的解决方案
  18. 重签名ipa步骤及工具
  19. java到达时间后自动执行代码_java设置按时间自动执行
  20. 许知远在吴晓波《预见2019——国运70》2018年年终演讲上的精华

热门文章

  1. NeHe OpenGL教程 第三十课:碰撞检测
  2. (马世龙)Linux下CACTI完全搭建技术文档二
  3. Unity3D手机斗地主游戏开发实战(02)_叫地主功能实现
  4. appium===setup/setupclass的区别,以及@classmathod的使用方法
  5. HBase-1.2.4LruBlockCache实现分析(一)
  6. BrowserSync开发利器
  7. Android之BroadcastReceiver 监听系统广播
  8. 安装 groovy eclipse 插件
  9. FlexViewer2.3中拉帘Widget下载
  10. python tip