JVM内存模型详解
一、JVM内存结构概述JVM在运行时将内存划分为多个区域,每个区域有不同的作用和生命周期。
二、程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。
特点:
线程私有
唯一不会出现OOM的区域
记录字节码指令地址
三、虚拟机栈虚拟机栈描述Java方法执行的内存模型,每个方法执行时会创建一个栈帧。
栈帧结构:
局部变量表:存储方法参数和局部变量
操作数栈:作为方法执行的工作区
动态链接:指向运行时常量池的方法引用
方法返回地址:方法正常或异常退出的地址
特点:
线程私有
生命周期与线程相同
StackOverflowError:栈深度超出限制
OutOfMemoryError:栈扩展时无法申请到内存
四、本地方法栈本地方法栈为Native方法服务,与虚拟机栈类似。
特点:
线程私有
服务于本地方法
可能抛出StackOverflowError和OutOfMemoryError
五、堆堆是JVM中最大的一块内存区域,所有线程共享,存放对象实例。
特点:
线程共享
垃圾收集的主要区域
可以处于物理上不连续的内存空间
堆的划分:
新生代 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment

