JVM内存
2017-01-04 20:32:24 0 举报
AI智能生成
JVM内存是Java虚拟机的内存管理区域,它主要包括堆内存、栈内存、方法区和本地方法栈。堆内存主要用于存储对象实例,是垃圾收集器管理的主要区域;栈内存用于存储局部变量和方法调用,每个线程有一个独立的栈空间;方法区用于存储类信息、常量、静态变量等数据,是线程共享的区域;本地方法栈则用于支持本地方法调用。JVM内存的合理管理对于提高程序性能和避免内存泄漏等问题至关重要。
作者其他创作
大纲/内容
方法区 Method Area
存放要加载的类信息、静态变量、final类型常量、属性、方法信息、和常量池
JVM用持久代(Permanet Generation)来存放方法区,用 -XX:PermSize 和 -XX:MaxPermSize 来指定大小
堆 Heap
存放对象和数组实例
-Xmx 和 -Xms来控制大小
垃圾回收区域
新生代:新建的对象都是用新生代来分配内存,Eden空间不足的时候,会把存活对象转移到Survivor中,-Xmn来控制新生代大小;-XX:SurvivorRatio来控制Eden和Survivor的比例
老年代/旧生代:用于存放新生代中经过多次垃圾回收仍然存活的对象
栈 Stack
线程私有,与线程在同一时间创建。管理java方法执行的内存模型
每个java方法执行会创建一个栈帧,来存储方法的临时变量(局部变量)、参数和中间结果、返回值、返回地址等。
栈的大小是固定的,也可以动态扩展
StackOverflowError: 请求的栈过深
OutOfMemory Error:没有足够内存来支持栈的扩展
本地方法栈 Java Native Stack
程序计数器 PC Register
记录要执行下一个指令的字节码
0 条评论
下一页