JVM基本常识

JVM(Java virtual machine)Java虚拟机

对于学习Java,一定要了解到JVM的基础知识,知道JVM的内存分配以及JVM的基本常识

对于要深入理解JVM的推荐这篇,对于开发和程序运行架构有帮助 https://mp.weixin.qq.com/s/6AohfmVfbtn1-RJjG43UFw

常用总结(较为shallow):

(1)Java编译执行过程

(2)JVM内存分配 (推荐博文https://www.cnblogs.com/dingyingsi/p/3760447.html

首先JVM的逻辑内存模型图如下

1、程序计数器:

内存较小、各条线程间的计数器互不影响,独立存储即“线程私有”;作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址

2、Java虚拟机栈(栈内存):

线程私有、存储局部变量表(Java编译期可知的各种基本数据类型对象引用、returnAddress类型)、操作栈、动态链接、方法出口等信息,当线程请求的栈深度超过了虚拟机允许的最大深度时,就会抛出StackOverFlowError即栈内存溢出;

3、本地方法栈:

线程私有的,保存的是native方法的信息

4、Java堆区

java堆是所有线程共享的一块内存,几乎所有对象的实例和数组都要在堆上分配内存(但不是所有的对象和数组都会在堆内存分配空间),因此该区域经常发生垃圾回收的操作;

5、方法区:

存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码数据。主要存放java类定义信息,与垃圾回收关系不大,但不是没有垃圾回收。

GC垃圾回收:

1、确定哪些是垃圾

2、进行垃圾的回收

类加载机制:

Java虚拟机不和任何语言绑定,它只与class文件的二进制文件格式相关联,即任意门功能性语言都可以表示为一个能被Java虚拟机所接受的有效的class文件。

常量池:class文件的资源仓库;

类加载过程:

加载---验证---准备---解析---初始化

参考https://www.jianshu.com/p/355ae3bcec41,这篇笔记也比较精炼

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值