java中不可变对象使用避坑

目录

总结:

一,java中的不可变对象

二,不可变对象的优点

三,测试不可变对象LocalDateTime的plusMinutes()方法

        1. main 方法

        2. 运行方法 

        3 . 查看YGC次数,平均每秒50多次

        4,统计heap中的对象数量

        5,源码分析

        6,可用同样的方法测试包装类


总结:

        1,不要大量使用不可变对象和不可边对象提供的方法(每次调用不可变对象的修改方法会创建出新的对象出来,导致频繁的YGC

        2,计算密集型任务不要使用包装类(包装类体积大,数据密度低,增加取存数据时间。运算时也会创建大量的包装类对象出来)

        3,不要在循环体中使用不可变对象提供的方法(可能会创建大量的一次性对象出来)

一,java中的不可变对象

       Java中有许多不可变的对象,以下是其中的一些:

  1. 字符串(String):字符串在Java中是不可变的对象。一旦创建了一个字符串对象,它的值就不能被修改。
  2. 整数(Integer)、长整数(Long)、浮点数(Float)和双精度浮点数(Double):这些数字类型在Java中也是不可变的对象。一旦创建了一个数字对象,它的值就不能被修改。
  3. 枚举(Enum):枚举类型也是不可变的对象。枚举类型中的每个元素都是一个不可变的对象。
  4. LocalDate、LocalTime、LocalDateTime:Java 8中的日期和时间API中的这些类也是不可变的对象。一旦创建了一个日期或时间对象,它的值就不能被修改。
  5. BigInteger、BigDecimal:这些类提供了任意精度的整数和浮点数运算,也是不可变的对象。

Java 中的不可变对象(Immutable Objects)详解_immutable object is modified-CSDN博客

二,不可变对象的优点

 &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值