JVM内存模型小结

JVM内存分为线程栈,堆,静态方法区

线程栈:

装载程序指令及局部变量表,每个线程有独立的栈空间并且相互隔离

线程栈大小的设置:1.JVM参数设置 -XSS 2.创建线程时手动指定

线程数量限制:1.受操作系统限制 2.受线程栈总空间的限制

堆:

存放对象实例,被所有线程共享

最大堆内存设置:-Xmx

堆的划分:新生代(Eden,Survivor),老年代,新的对象一般放入新生代,如果对象过大直接放入老年代,在垃圾回收过程中Eden中的对象先被放入Survivor,如果多次未被回收则放入老年代

静态方法区:

又被称为永久代,本质上是一块连续的空间,用于存放类信息,常量,静态变量等

静态方法区大小设置:-XX:MaxPermSize=512m

JDK1.8之后,静态方法区放入叫做MetaSpace的本地内存,最大限度的利用本地内存,解决了永久代大小设置的困难

你可能感兴趣的:(JVM内存模型小结)