垃圾收集器如何优化内存分配策略?

2026-05-06 04:062阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计4932个文字,预计阅读时间需要20分钟。

垃圾收集器如何优化内存分配策略?

程序计数器、虚拟机栈、本地方法栈三个区域随线程创建而创建,随线程执行完成而销毁。栈中的栈帧随入栈和出栈执行。每个栈帧分配少量内存,基本在类结构确定。

程序计数器、虚拟机栈、本地方法栈三个区域随着线程的创建而创建、执行完成销毁,栈中的栈帧随着放大的进入和退出执行入栈与出栈,每个栈帧分配多少内存基本上是在类结构确定下来时已知,因此这几个区域的内存分配与回收都具备确定性。
Java堆中存放的所有对象的实例,只有在程序运行期间我们才会知道会创建哪些对象,这部分内存分配与回收都是动态的,垃圾收集器重点关注的就是这部分。

引入计数算数
给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的的对象就是不可能再被使用的。
缺点:它很难解决对象之间的相互循环引用的问题。

阅读全文

本文共计4932个文字,预计阅读时间需要20分钟。

垃圾收集器如何优化内存分配策略?

程序计数器、虚拟机栈、本地方法栈三个区域随线程创建而创建,随线程执行完成而销毁。栈中的栈帧随入栈和出栈执行。每个栈帧分配少量内存,基本在类结构确定。

程序计数器、虚拟机栈、本地方法栈三个区域随着线程的创建而创建、执行完成销毁,栈中的栈帧随着放大的进入和退出执行入栈与出栈,每个栈帧分配多少内存基本上是在类结构确定下来时已知,因此这几个区域的内存分配与回收都具备确定性。
Java堆中存放的所有对象的实例,只有在程序运行期间我们才会知道会创建哪些对象,这部分内存分配与回收都是动态的,垃圾收集器重点关注的就是这部分。

引入计数算数
给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的的对象就是不可能再被使用的。
缺点:它很难解决对象之间的相互循环引用的问题。

阅读全文