栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

浅学JVM

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅学JVM

JVM大致结果: 

 

一.类加载器

1.类加载器收到类加载的请求之后

2.找到当前加载器(AppClassLoader)的父加载器(ExtClassLoader)的父加载器(null,找不到这个加载器因为Java底层用c和c++写的),直到根加载器

3.看是否能找到需要加载的类,如果能找到,加载这个类,找不到就用找子加载器找,直到最底层的加载器找不到或找到需要加载的类

二.native

1.Java底层是用C和C++语言编写的,Java底层要去调用C和C++的库使用native关键字

2.会进入本地方法栈中去调用本地方法接口

三.方法区

静态变量,常量,类信息等存放在方法区中

四.栈

栈:先进后出,后进先出

主线程结束,栈就over,栈不存在垃圾回收问题

存放内容:8大类型+方法+对象引用

五.堆

一个JVM只有一个堆

堆内存满了:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

1.新生区

伊甸园区:所有的对象都是从这new出来的

幸存区(0,1)

2.老年区:从幸存区活下来的对象

3.永久区(元空间):存放Java的运行时的一些环境

4.OOM,内存溢出

默认情况:JVM分配的内存是电脑的1/4,初始化内存是电脑的1/64

当JVM的内存满时内存溢出,解决办法把JVM的内存调大看是否满,

命令(JVM总内存和初始化内存为1024MB):-Xms1024m -Xmx1024m -XX:+PrintGCDetails

 内存溢出:

 可以使用JProfiler工具进行分析

六.GC

        GC的作用区域:方法区,堆

GC分类:轻GC,重GC

堆:伊甸园区,from区,to区,养老区,元空间

注:from和to区可以交换的谁是空的谁是to区

复制算法:在新生区的from区和to区,当GC垃圾回收时,伊甸园区的幸存对象到,to区,那么使用复制算法将from区的内容复制到to区,此时的to区变为from区

标记清除压缩算法:第一次扫描,对对象进行标记;第二次扫描,对没有标记的对象进行清除;第三次扫描,把存活的对象放在一端,为了防止内存碎片化

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026666.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号