资讯专栏INFORMATION COLUMN

Java程序员:不识Jvm真面目,只缘身在增删查改中

or0fun / 901人阅读

摘要:编译器只需面向,生成能理解的代码或字节码文件。源文件经编译器,编译成字节码程序,通过将每一条指令翻译成不同平台机器码,通过特定平台运行。涨见识,字节码执行过程分析。解决办法减少默认栈的容量来换取更多的线程支持。

前言

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机,可以在上面执行java的字节码程序。

java编译器只需面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译器,编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

这里就给大家讲一下JVM。

技术大咖带你垂直打击JVM

什么是运行时数据区? 我们一起来分享。
了解JVM底层原理,让你的代码撸得飞起。
搞定内存溢出,涨薪升职。
涨见识,字节码执行过程分析。
直击真相,原理和代码全都有。
测试、效果演示及总结。

JVM是什么?

JDK: java development kit (Java开发工具包) 编译、反编译、调试等。

JRE: java runtime enviroment (Java运行环境)

JVM: java Virtual Mechinal (Java虚拟机) 一次编写,到处运行!

学jvm的目就是:

提升代码质量、解决项目问题。

面试!面试!还是面试!

JVM是怎么玩的

类加载器:Class字节码文件加载到内存

执行引擎:解析字节码指令,得到执行结果

运行时数据区

JVM运行时数据区

线程私有
程序计数器
虚拟机栈
本地方法栈
线程共享

列表项目

方法区

BAT的JVM面试题

JVM什么情况下会发生栈内存溢出?

JVM中一次完整的GC流程是怎样的?
GC——垃圾回收
完整意味着有多种情况
程序计数器
指向当前线程正在执行的字节码指令的地址(行号)

栈是什么?

栈(Stack)
入口和出口只有一个
入栈
出栈

FILO
先进后出

虚拟机栈

虚拟机栈
创建一个线程就为线程分配一个虚拟机栈,它又会包含多个栈帧,因为每运行一个方法就创建一个栈帧。
运行时才有数据
栈帧
运行一个线程中的一个方法
1.局部变量表
2.操作数栈
3.动态连接
4.返回地址

深入理解虚拟机栈

演示一段代码的方法的执行过程

代码:

public int calc(){

int a=100;

int b=200;

int c=300;

return(a+b)*c;

}

虚拟机栈的异常

StackOverFlowError异常
原因:执行的虚拟机栈深度大于虚拟机栈允许的最大深度(方法的递归调用)。
解决办法:增加默认栈的容量。
栈容量 -Xss 默认1M

OutOfMemeoryError异常
原因:多线程环境下虚拟机在扩展栈时无法申请到足够的内存空间。
解决办法:减少默认栈的容量来换取更多的线程支持。

JVM中线程共有的内存区域

Java堆
Java堆是被所有线程共享的一块内存区域
所有的对象实例以及数组要在堆上分配

元数据区
老版本名称:方法区(永久代)
类信息、常量、编译后的代码信息

直接内存

以上源于一个视频讲解的概述总结,后续将分享后半部分的内容:

可达性分析算法——GC Roots
JVM中的堆
新生代为什么分三个区?
新生代对象的分配和回收
老年代对象的分配和回收
JVM中一次完整的GC流程是怎样的?

**如果有兴趣想了解视频具体内容的可以关注我,加入我的合作群(805685193)即可获取原视频。
还有一些Java架构视频讲解,需要获取Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术视频教程资料,架构思维导图,和BATJ面试题及答案的,都是免费分享的。
关注我,加入我的合作群(805685193)即可获取视频。**

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11952.html

相关文章

  • Java序员不识Jvm面目只缘身在增删改中

    摘要:编译器只需面向,生成能理解的代码或字节码文件。源文件经编译器,编译成字节码程序,通过将每一条指令翻译成不同平台机器码,通过特定平台运行。涨见识,字节码执行过程分析。解决办法减少默认栈的容量来换取更多的线程支持。 前言 JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机,可以在上面执行java的...

    ivydom 评论0 收藏0
  • 入坑codewars

    摘要:,黑色的主题风格,很符合。时间复杂度虽然成功,但我明显感觉代码写得不是很优雅。这个是没错的,但缺乏了宏观的视角,会变得片面。但是不重要,关键是这个思想要学习,可以应用到其他地方。求和,大于就返回偶数的位置,否则返回奇数的位置。 前几天做LeetCode上的大数乘法,代码没错,可就是提交不成功,显示SyntaxError: Unexpected token var我把所有代码都注释掉,只...

    sherlock221 评论0 收藏0
  • 杂篇 - Vue豆瓣系列文章

    摘要:起初,项目使用的是,其提供的方法用着比较爽,由于项目的很多数据来自豆瓣的,直接上简单方便,跨域什么的不考虑。跨域问题,上面已经介绍,在不能操控的豆瓣数据上,使用的是。 项目地址 在线演示 不识庐山真面目,只缘身在此山中。 大概一个月前,开源了Vue重构豆瓣移动端的项目,效果还可以,收到了很多小伙伴的反馈,话说是要写一些文章的,但迟迟没有动笔,估计小伙伴们等的花都谢了,拖延症是病,需要治...

    lijinke666 评论0 收藏0
  • 后端API从入门到放弃指北

    摘要:菜鸟教程框架中文手册入门目标使用搭建通过对数据增删查改没了纯粹占行用的拜 后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 D...

    Jeffrrey 评论0 收藏0
  • 后端API从入门到放弃指北

    摘要:菜鸟教程框架中文手册入门目标使用搭建通过对数据增删查改没了纯粹占行用的拜 后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一峰:理解RESTful架构 阮一峰:RESTful API 设计指南 RESTful API指南 依赖注入 D...

    sf190404 评论0 收藏0

发表评论

0条评论

or0fun

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<