Java的内存模型(JVM的内存划分)

线程共享区:堆和方法区

线程独占区:栈,本地方法区和程序计数器

:存放的是new出来的东西(对象实例),被final修饰的局部变量.java堆是垃圾收集器管理的主要区域,因此很多时候被称为”GC堆”,java堆还可以细分为新生代和老年代,默认的,新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2,新生代 ( Young ) 被细分为 Eden 和 两个 Survivor 区域,这两个 Survivor 区域分别被命名为 from 和 to,以示区分。默认的,Eden : from : to = 8 : 1 : 1,JVM 每次只会使用 Eden 和其中的一块 Survivor 区域来为对象服务,所以无论什么时候,总是有一块 Survivor 区域是空闲着的。因此,新生代实际可用的内存空间为 9/10 ( 即90% )的新生代空间。如果堆中没有内存来完成实例分配,并且堆无法再扩展时,会抛出OutOfMemoryError

方法区:用于存储已被虚拟机加载的类信息(类的版本,字段(成员变量),方法,接口),常量,静态变量和编译器编译后生成的.class文件.当方法区无法满足内存分配需求时,将抛出OutOfMemoryError异常

栈:存放的是局部变量

你可能感兴趣的:(jvm)