垃圾收集器与内存分配策略

Java26

程序计数器、虚拟机堆栈和本地方法堆栈在创建和执行线程后创建和销毁。堆栈中的堆栈帧通过放大的入口和出口被推入和退出堆栈。在确定类结构时,分配给每个堆栈帧的内存量基本上是已知的,因此这些区域中的内存分配和循环是确定的。

[En]

The program counter, virtual machine stack, and local method stack are created and destroyed after the thread is created and executed. The stack frames in the stack are pushed in and out of the stack with the magnified entry and exit. The amount of memory allocated to each stack frame is basically known when the class structure is determined, so the memory allocation and recycling in these areas are deterministic.

Java堆中存放的所有对象的实例,只有在程序运行期间我们才会知道会创建哪些对象,这部分内存分配与回收都是动态的,垃圾收集器重点关注的就是这部分。

引入计数算数
向对象添加引用计数器。每次一个地方引用它时,计数器值将增加1;当参考失败时,计数器值减少1;计数器随时为0的对象不能再次使用。

[En]

Add a reference counter to the object. Each time a place references it, the counter value will be increased by 1; When the reference fails, the counter value decreases by 1; Objects whose counters are 0 at any time cannot be used again.

缺点:它很难解决对象之间的相互循环引用的问题。

VM ages:-XX:+PrintGCDetails 打印GC详细信息:

```
package memory;

public class ReferenceCountingGC {

public Object instance = null;

private static  final  int _1MB = 1024 *1024;

private byte[] bigSize = new byte[2 *_1MB];
输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
web监听器解析 Java

web监听器解析

监听器是web三大组件之一,事件监听机制如下: 事件:某个事件,如果初始化上下文 事件源:事件发生的地方 监听器:一个对象,拥有需要执行的逻辑 注册监听:将事件、事件源、监听器绑定在一起。当从事件源发...
datatimepicker插件 Java

datatimepicker插件

```jsp 演示bs_datatimepicker插件 $(function () { //当容器加载完成,对容器调用工具函数 $("#myDate").datetimepicker({ forma...
订单及其状态机的设计实现 Java

订单及其状态机的设计实现

状态机简介: 状态机是有限状态自动机的缩写,是从现实事物的运行规则中抽象出来的数学模型[规则的抽象][En]State machine is the abbreviation of finite st...
PyScript:让Python在HTML中运行 Java

PyScript:让Python在HTML中运行

大家好,我是DD,已经是封闭在家的第51天了! 最近一直在更新Java新特性和IDEA Tips两个专栏,其他方向内容的动态关注少了。昨天天晚上刷推的时候,瞄到了这个神奇的东西,觉得挺cool的,拿出...
Java(8)数组 Java

Java(8)数组

数组 数组存储相同类型值的序列。 声明数组 数组是一种数据结构,用来存储同一类型值的集合。通过一个整型下标(index,或称索引)可以访问数组中的每一个值。例如,如果a是一个整型数组, a[i]就是数...
自己动手实现java数据结构(九) 跳表 Java

自己动手实现java数据结构(九) 跳表

1. 跳表介绍 在之前关于数据结构的博客中介绍了两种基本数据结构:基于连续内存空间(线性表)的矢量和基于链接节点结构的链表。[En]Two basic data structures have bee...
python函数 Java

python函数

在 Python 中,使用 def 关键字定义函数: 实例 def my_function(): print("Hello from a function") 如需调用函数,请使用...
一文学会Java的交互式编程环境jshell Java

一文学会Java的交互式编程环境jshell

什么是交互式编程环境?重点词 交互,在这样的编程环境中,你每输入一行代码,环境都会给你一个反馈,这就是交互式的编程环境。这种编程环境并不太适合工程化的复杂性需求,但在一些快速验证、简单计算之类的场景下...
SpringMVC(1) Java

SpringMVC(1)

一:SpringMVC简介:它时一种设计模式或者称为设计规范,M既Model层,模型层,主要对应Javaweb时的Dao和service,V即View层,视图层,主要对应Javaweb时的jsp/HT...