速记-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空间,可以提高垃圾回收的效率。
全部评论

相关推荐

门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务