JVM的理解

一、 内存管理

1. 内存结构

    方法区:

                  类加载的信息

                  运行时常量池:来源class文件中的常量池,动态设置常量的API

                  所有线程共享

                  PermSpace,MaxPermSpace

    堆

                  存放对象实例

                  分代收集

                         Eden

                         from survior

                         to survior

                         old

                  所有线程共享

                  -Xmx,-Xms

    虚拟机栈

                  线程执行java方法的调用栈,方法调用的嵌套,对应栈帧的入栈,出栈。

                  一个方法是一个栈帧。

                  一个栈帧

                         局部变量表

                         操作数栈

                  一个线程私有。

                 -Xss

    本地方法栈

                 类似java方法,这里执行本地方法。

    程序计数器

                 一个线程执行到字节码指令列表的哪条指令。

    直接内存

    执行引擎

    本地方法库接口

    本地方法库

    

2. 垃圾回收

    如何确定对象是否为垃圾?引用计数算法,根搜索算法。

    确定了对象是否为垃圾,然后怎么处理?

           垃圾直接回收

           非垃圾

                  标记清除算法

                         标记哪些是垃圾对象,直接回收,回收空间直接使用

                  标记复制算法

                         准备一个和原空间一样大的内存,将标记的删除,将非垃圾的copy到另一个空间去。

                         发现每次复制的很少,更新成第二版本

                                一个Eden占90%

                                两个survior占10%

                                一开始用一个Eden,一个survior,回收时,将非垃圾对象,copy到另一个survior上。

                  标记整理算法

                         将标记的垃圾对象回收,将非垃圾对象整理位置,挪到前面去,剩余空间连续。

                  分代收集算法*

                          年轻代用标记复制算法

                          老年代用标记整理算法

3. 内存监控工具

    jps

    jstat

    jmap

    jstack

 

二、执行引擎

1. class文件结构

2. 加载过程和类加载器

3. 执行引擎确定方法版本,执行方法内字节码,执行时内存结构

 

三、编译优化

1. 编译期优化

2. 运行期优化

 

四、并发执行

1. 多线程

2. 并发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值