JVM 学习入门 JVM探究「狂神说」

面试常见:
●请你谈谈你对JVM的理解? java8虚拟机和之前的变化更新?
●什么是OOM,什么是栈溢出StackOverFlowError? 怎么分析?
●JVM的常用调优参数有哪些?
●内存快照如何抓取,怎么分析Dump文件?
●谈谈JVM中,类加载器你的认识

学习目录:

在这里插入图片描述
在这里插入图片描述

1.JVM在系统中的位置
在这里插入图片描述
2.JVM的体系结构
在这里插入图片描述
百分之99的JVM调优都是在堆中调优,Java栈、本地方法栈、程序计数器是不会有垃圾存在的。

3.类加载器

在这里插入图片描述
类加载器:
 1.虚拟机自带的加载器
 2.启动类(根)加载器
 3.扩展类加载器
 4.应用程序加载器

4.双亲委派机制:

https://blog.csdn.net/codeyanbao/article/details/82875064

5.沙箱安全机制:
沙箱机制就是将Java代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。

https://blog.csdn.net/qq_30336433/article/details/83268945

6.Native
凡是带了native关键字的,说明java的作用范围达不到了,回去调用底层c语言的库
调用本地方法本地接口 JNI (Java Native Interface)
Java诞生的时候C、C++横行,想要立足,必须要有调用C、C++的程序

7.PC寄存器

8.方法区
静态变量、常量、类信息(构造方法、接口定义)、运行时的常量池存在方法区中,但是 实例变量存在堆内存中,与方法区无关
在这里插入图片描述
左边是栈 右上角是堆 下面的是方法区

9.栈
栈:先进后出
桶:后进先出
队列:先进先出( FIFO : First Input First Output )
栈:栈内存,主管程序的运行,生命周期和线程同步;
线程结束,栈内存也就是释放,对于栈来说,不存在垃圾回收问题
在这里插入图片描述
在这里插入图片描述
10.三种JVM
11.堆
类加载器读取了类文件后,一般会把类,方法,常量,变量,保存所有引用类型的真实对象放到堆中。
垃圾回收:轻量级GC,重量级GC(Full GC)
堆内存分为三个区域:新生区(伊甸园区Eden Space;幸存0区,幸存1区)、养老区、永久存储区。
GC垃圾回收,主要在伊甸园区和养老区
假设内存满了OOM,java.lang.OutOfMemoryError
在JDK8以后,永久存储区叫元空间

狂神这部分讲的有点混乱,参考链接会好点

12.13.新生区、老年区、永久区
参考链接会好点

14、堆内存调优
IDEA+Jprofile https://blog.csdn.net/wytocsdn/article/details/79258247
Jprofile https://blog.csdn.net/a294039255/article/details/84863892

15.GC
GC:Garbage Collection 垃圾收集
Java中,GC的对象是Java堆和方法区(即永久区)

详解:详解地址

16.JMM
Java的并发采用的是共享内存模型
https://www.jianshu.com/p/8a58d8335270

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值