堆、栈、方法区、直接内存

时间:2021-01-01 05:38:46

堆中存放对象

jvm中只有一个堆区,各线程共享

优缺点:内存是动态的,生命周期不定GC自动回收,速度慢

栈中存放基础数据类型,自定义对象的引用(非对象)

每个线程一个栈区,栈内数据私用,线程独享

栈分三部分:基本类型变量、执行环境上下文、操作指令区

优缺点:速度快,但是大小、生命周期固定,不灵活

方法区

也叫静态区,所有线程共享

存放所有的class,static变量

包含的是在整个程序中永远唯一的元素,如:class,static变量

直接内存

堆外内存,并非虚拟机数据区的一部分,可以分配的,大小受本机内存限制

与堆区相比,IO读写性能要优于堆区,频繁申请更耗费性能