速记-JVM划分
JVM是Java虚拟机的缩写,是Java语言的核心部分。JVM主要负责将Java源代码编译成字节码,然后执行这些字节码。在JVM中,内存主要分为以下几个区域:
程序计数器:是一块较小的内存区域,用于线程的指令计数器,记录线程执行的位置和执行状态,是线程私有的。
虚拟机栈:每个线程在执行时都有一个私有的栈,用于存储栈帧,即方法调用和执行时的状态信息。
本地方法栈:与虚拟机栈类似,用于为本地方法服务。
堆:是JVM中最大的一块内存区域,是被所有线程共享的内存区域,用于存放对象实例。
方法区:用于存放已加载的类信息、常量、静态变量等数据。
在JVM中,垃圾回收主要针对堆内存,JVM中的垃圾回收算法主要有标记-清除算法、复制算法、标记-整理算法等。新生代和老年代是为了更好地进行垃圾回收而设立的两个不同的区域。
新生代是存放新生成的对象的区域,通常将其分为一个较大的Eden空间和两个较小的Survivor空间,比例为8:1:1。当Eden空间满时,就会触发一次Minor GC,将Eden和其中一个Survivor中的存活对象复制到另一个Survivor空间,然后清空原空间。当某个Survivor空间被填满时,也会触发一次Minor GC。老年代则是存放较大的长期存活的对象,需要采用更加高效的垃圾回收算法,如标记-整理算法和标记-清除算法等。
至于为什么新生代比例是8:1:1,主要是因为新生成的对象通常比较小,大部分都是临时对象,而且有很多对象是很快就被回收的。所以将新生代分为较大的Eden和较小的Survivor空间,可以提高垃圾回收的效率。
程序计数器:是一块较小的内存区域,用于线程的指令计数器,记录线程执行的位置和执行状态,是线程私有的。
虚拟机栈:每个线程在执行时都有一个私有的栈,用于存储栈帧,即方法调用和执行时的状态信息。
本地方法栈:与虚拟机栈类似,用于为本地方法服务。
堆:是JVM中最大的一块内存区域,是被所有线程共享的内存区域,用于存放对象实例。
方法区:用于存放已加载的类信息、常量、静态变量等数据。
在JVM中,垃圾回收主要针对堆内存,JVM中的垃圾回收算法主要有标记-清除算法、复制算法、标记-整理算法等。新生代和老年代是为了更好地进行垃圾回收而设立的两个不同的区域。
新生代是存放新生成的对象的区域,通常将其分为一个较大的Eden空间和两个较小的Survivor空间,比例为8:1:1。当Eden空间满时,就会触发一次Minor GC,将Eden和其中一个Survivor中的存活对象复制到另一个Survivor空间,然后清空原空间。当某个Survivor空间被填满时,也会触发一次Minor GC。老年代则是存放较大的长期存活的对象,需要采用更加高效的垃圾回收算法,如标记-整理算法和标记-清除算法等。
至于为什么新生代比例是8:1:1,主要是因为新生成的对象通常比较小,大部分都是临时对象,而且有很多对象是很快就被回收的。所以将新生代分为较大的Eden和较小的Survivor空间,可以提高垃圾回收的效率。
全部评论
相关推荐
点赞 评论 收藏
分享
06-02 23:35
门头沟学院 后端 点赞 评论 收藏
分享