Java随笔5-引用

该博客探讨了Java虚拟机(JVM)内存管理,特别是关于软引用、弱引用和虚引用的特性。通过设置-Xmx20m限制内存,测试显示软引用在内存充足时不被回收,但在内存不足时会被清理。弱引用在垃圾收集后立即被清除。虚引用则需配合ReferenceQueue使用,GC后将虚引用对象放入队列。这些引用类型对于理解和优化Java内存使用至关重要。
摘要由CSDN通过智能技术生成

设定虚拟机参数:-Xmx20m,执行以下代码:

public class ReferenceTest {

    @Test
    public void test() {
        SoftReference<byte[]> softReference = new SoftReference<>(new byte[1024 * 1024 * 10]);
        System.out.println("软引用,gc前:" + softReference.get());
        System.gc();
        System.out.println("软引用,内存充足时gc后:" + softReference.get());
        byte[] strongRef = new byte[1024 * 1024 * 10];
        System.out.println("软引用,内存不足时gc后:" + softReference.get());

        WeakReference<byte[]> weakReference = new WeakReference<byte[]>(new byte[1]);
        System.out.println("弱引用,gc前:" + weakReference.get());
        System.gc();
        System.out.println("弱引用,gc后:" + weakReference.get());

        ReferenceQueue queue = new ReferenceQueue();
        PhantomReference<byte[]> reference = new PhantomReference<byte[]>(strongRef, queue);
        PhantomReference<byte[]> reference2 = new PhantomReference<byte[]>(strongRef, queue);
        System.out.println("虚引用,gc前:" + queue.poll());
        for (int i = 0; i < 100; i++) {
            strongRef = new byte[1024 * 1024];
        }
        System.out.println("虚引用,gc后:" + queue.poll() + "、" + queue.poll());
    }

}

执行结果:

软引用,gc前:[B@3d82c5f3
软引用,内存充足时gc后:[B@3d82c5f3
软引用,内存不足时gc后:null
弱引用,gc前:[B@2b05039f
弱引用,gc后:null
虚引用,gc前:null
虚引用,gc后:java.lang.ref.PhantomReference@61e717c2、java.lang.ref.PhantomReference@66cd51c3

虚引用特点:

1、无法阻止gc

2、无法通过虚引用来获取对一个对象的真实引用

3、必须与ReferenceQueue一起使用,当GC准备回收一个对象,如果发现有虚引用指向它,就会在回收之前,把相关虚引用加入到与之关联的ReferenceQueue中

ThinkPHP 是一个优秀的PHP框架,可以帮助我们快速开发高质量的 Web 应用程序。因此,使用 ThinkPHP 来开发 OA 系统是非常方便和实用的。下面我们来讨论一下如何使用 ThinkPHP 来开发一个人力资源管理系统。 1. 创建数据库 首先,我们需要创建一个数据库来存储我们的数据。在该数据库中,我们需要创建一些表来存储员工信息、部门信息、职位信息、薪资信息等等。我们可以使用 MySQL 数据库来创建这些表。 2. 创建 ThinkPHP 项目 在创建完数据库之后,我们需要创建一个 ThinkPHP 项目来实现我们的 OA 系统。我们可以使用 ThinkPHP 官方提供的命令行工具来创建项目,具体命令如下: ``` composer create-project topthink/think oa ``` 执行完上述命令后,会在当前目录下创建一个名为 oa 的 ThinkPHP 项目。 3. 配置数据库 在项目创建好之后,我们需要配置数据库连接信息。在项目的 `.env` 文件中,我们可以配置数据库的相关信息,如下所示: ``` # 数据库类型 DB_CONNECTION=mysql # 数据库地址 DB_HOST=127.0.0.1 # 数据库端口 DB_PORT=3306 # 数据库名 DB_DATABASE=oa # 数据库用户名 DB_USERNAME=root # 数据库密码 DB_PASSWORD= ``` 我们需要根据自己的实际情况来修改这些配置项。 4. 创建控制器和模型 在 ThinkPHP 中,我们可以通过创建控制器和模型来实现 OA 系统的功能。我们可以使用命令行工具来快速创建控制器和模型,具体命令如下: ``` # 创建控制器 php think make:controller Index # 创建模型 php think make:model User ``` 执行完上述命令后,会在项目中生成一个名为 Index 的控制器和一个名为 User 的模型。 5. 实现功能 在创建好控制器和模型之后,我们就可以开始实现 OA 系统的功能了。比如,我们可以实现员工信息的添加、修改、删除、查询等操作,部门信息的添加、修改、删除、查询等操作,职位信息的添加、修改、删除、查询等操作,薪资信息的添加、修改、删除、查询等操作等等。我们可以在控制器中编写处理逻辑,在模型中编写数据库操作。最后,我们可以使用视图来展示数据。 6. 测试系统 在实现完功能之后,我们需要对系统进行测试。我们可以使用浏览器或者 Postman 等工具来测试系统的功能是否正常。如果有问题,我们可以根据错误提示来进行调试和修复。 总之,使用 ThinkPHP 来开发 OA 系统是非常方便和实用的。我们可以根据自己的实际情况来定制系统的功能和界面,从而更好地管理公司的人力资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值