欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JVM内存结构

程序员文章站 2022-03-02 14:16:37
...
把知道的java内存结构简单缕一缕

主要有这个几个
[b]方法区
堆(分代的)[/b]
这两个算是比较清晰的
还有一个不大清晰的 [b]JVM方法栈[/b]

方法区就是存放Class信息的 如类的继承层次,类的静态变量 有哪些字段 哪些方法等等
这块内存通过permSize maxPermSize来指定其大小

堆是保存对象的内存空间,你创建的每个对象都保存在堆中
堆的大小通过-Xms -Xmx来控制大小 通常设置
-Xms == -Xmx

堆是分代管理的,有新生代和旧生代
新创建的对象放在新生代,经过几轮GC仍然存活的会转到旧生代
大对象也可能直接分配到旧生代,至于多大要用-XX:PretenureSizeThreshold来指定

其中新生代有分为3部分 Eden S0 S1
可通过-Xmn来指定新生代的大小

栈:每个线程都对应一个栈,线程结束后栈内存被释放
栈的大小通过-Xss指定
栈中不会保存对象 只是保存对象的引用
但是会保存一些局部的基本类型 如 int long等
相关标签: JVM