首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用括号初始化集合,可别这么干

Double Brace Initialization should not be used 前言 最近在修改sonar问题时,发现有人使用括号初始化集合,提示可能发生内存泄漏。...:bob Thread name: Finalizer Object: sandy Gc happen 分析 匿名内部类持有外部类对象引用 括号初始化时,可以直接使用外部类对象成员name。...当然这只是表面,接下来我们从字节码层面看看到底怎么回事。 使用了匿名内部类 括号初始化方法 非括号初始化方法 编译后产生文件 可以发现,多了一个内部类:A$1.class。...查看内部类字节码 拥有一个外部类成员变量 通过构造方法传入了外部类对象引用 将外部类对象引用赋值给成员变量 执行我们写put方法 内部类继承于HashMap 发生了内存泄漏 使用非括号初始化...mapsandy被回收了,而使用括号初始化mapbob却没有被回收。

84130
您找到你想要的搜索结果了吗?
是的
没有找到

永远不要使用括号初始化实例,否则就会OOM!

“怎么能用括号初始化实例呢?”...老张:“使用括号初始化实例是会导致内存溢出啦!侬不晓得嘛?”...于是片刻敷衍,待老张离去之后,才悄悄打开了 Google,默默搜索了一下。 小王:哦,原来如此...... 括号初始化分析 首先,我们来看使用括号初始化本质是什么?...总结 本文我们讲了括号初始化因为会持有外部类引用,从而可以会导致内存泄漏问题,还从字节码以及反射层面演示了这个问题。...要想保证括号初始化不会出现内存泄漏办法也很简单,只需要被 static 修饰即可,但这样做还是存在潜在风险,可能会被某人不小心删除掉,于是我们另寻它道,发现了可以使用 Java8 Stream

1.7K30

shell括号(小括号括号,大括号

如:array=(a b c d)   2、括号 ((  ))     ①整数扩展。这种扩展计算是整数型计算,不支持浮点型。...如:echo $((16#5f)) 结果为95 (16进位转十进制)     ③单纯用 (( )) 也可重定义变量值,比如 a=5; ((a++)) 可将 $a 重定义为6     ④括号变量可以不使用...④在一个array 结构上下文中,括号用来引用数组每个元素编号。   2、括号[[ ]]     ①[[是 bash 程序语言关键字。...比如,&&、||、 操作符能够正常存在于[[ ]]条件判断结构,但是如果出现在[ ]结构的话,会报错。     ④bash把括号表达式看作一个单独元素,并返回一个退出状态码。...三)大括号括号 {}   1、常规用法。     ①大括号拓展。(通配(globbing))将对大括号文件名做扩展。在大括号,不允许有空白,除非这个空白被引用或转义。

3.9K10

”BUG测试分享

”一词我是从区块链领域听到,查了一下资料,基本所有的引用都是基于区块链,但是今天所讲”不是区块链领域,而是普通接口测试遇到BUG,由于概念一致,所以采用“”一词。...,顾名思义,花了两次,一分钱或者交换流通物品。下面分享一下自己在工作遇到一个BUG测试方案和原因解释。...测试工具:Java(不唯一),把接口提供功能封装为方法,然后通过多线程调用封装号方法,完成多线程请求兑换接口。 解决方案:在常规测试场景以外,利用多线程并发去测试BUG。...主要利用了写好性能测试框架去并发去发送某一个httprequestbase对象,通过构造对应测试数据,检查测试完成后测试数据,对比发现是否存在BUG。...,被当做两份金币消费了,也就是

85020

OC一些编程写法--({"添加代码"}) 括号用法

imageView.clipsToBounds = YESS; [view addSubview:imageView]; view; }); 这个问题严格上讲和Objective-C没什么太大关系...,这个是GNU C对C扩展语法 Xcode采用Clang编译,Clang作为GCC替代品,和GCC一样对于GNU C语法完全支持 你可能知道if(condition)后面只能根一条语句,多条语句必须用...{}阔起来,这个语法扩展即将一条(多条要用到{})语句外面加一个括号(), 这样的话你就可以在表达式应用循环、判断甚至本地变量等。...表达式()最后一行应该一个能够计算结果子表达式加上一个分号(;), 这个子表达式作为整个结构返回结果 这个扩展在代码中最常见用处在于宏定义

78220

shell各种括号作用(

三.大括号括号 {} 常规用法 1.大括号拓展。(通配(globbing))将对大括号文件名做扩展。在大括号,不允许有空白,除非这个空白被引用或转义。...第一种:对大括号以逗号分割文件列表进行拓展。如 touch {a,b}.txt 结果为a.txt b.txt。...第二种:对大括号以点点(..)分割顺序文件列表起拓展作用,如:touch {a..d}.txt 结果为a.txt b.txt c.txt d.txt #ls {ex1,ex2}.sh ex1.sh...与小括号命令不同,大括号命令不会新开一个子shell运行,即脚本余下部分仍可使用括号内变量。括号命令间用分号隔开,最后一个也必须有分号。{}第一个命令和左括号之间必须要有一个空格。...结构pattern支持通配符,表示零个或多个任意字符,?表示仅与一个任意字符匹配,[…]表示匹配括号里面的字符,[!…]表示不匹配括号里面的字符。

1.8K20

Python类-带括号与不带括号区别

定义   用来描述具有相同属性和方法对象集合。它定义了该集合每个对象所共有的属性和方法。对象是类实例。   ...所以一个类下面可以有多个方法和多个属性,属性可以只属于某个方法,也可以是全局。   类创建   python3创建类方式有两种,一种带括号,一种不带括号。...,可以不带括号,也可以带,也可以显示继承object,如果带个()空括号,其实也是隐士继承了object。...在 Python ,变量就是变量,它没有类型,我们所说"类型"是变量所指内存对象类型。   等号(=)用来给变量赋值。   ...“类提供默认行为,是实例工厂”,打个比方,车是类,别克凯越是类实例。     类实例化只有一种方式,就是实例化时候,需要带括号,这个括号根据实际情况可以为空,也可以传参。

2.4K60

Shell 括号用法总结

Shell 里面的括号(包括单括号括号)可用于一些条件测试: 算术比较, 比如一个变量是否为0, [ $var -eq 0 ]。...文件系统属性测试 使用不同条件标志测试不同文件系统属性。 ? 使用方法如下: ? 字符串比较 在进行字符串比较时,最好使用括号 [[ ]]....因为单括号可能会导致一些错误,因此最好避开它们。 检查两个字符串是否相同: ? 当 str1等于str1等于str2 时,返回真。也就是说,str1 和 str2 包含文本是一样。...字符串其他比较情况: ? 使用逻辑运算符 && 和 || 可以轻松地将多个条件组合起来, 比如: ?...test 命令也可以从来执行条件检测,用 test 可以避免使用过多括号,[] 测试条件同样可以通过 test 来完成。 ? 等价于: ?

2.5K20

理解 Bash 括号

Bash 内置了很多诸如 ls、cd、mv 这样重要命令,也有很多诸如 grep、awk、sed 这些有用工具。但除此之外,其实 Bash 还有很多可以起到胶水作用标点符号,例如点号(.)...、逗号(,)、括号()、引号(")之类。下面我们就来看一下可以用来进行数据转换和转移括号()。...转移数据 如果你对其它编程语言有所了解,你会知道尖括号 一般是作为逻辑运算符,用来比较两个值之间大小关系。如果你还编写 HTML,尖括号作为各种标签一部分,就更不会让你感到陌生了。...你也可以不使用 > 而使用 >>,这样就可以把新数据追加到文件末端而不会覆盖掉文件已有的数据了。...文件,然后使用 wc -l 计算出 dir_content.txt 文件行数(也就是家目录文件数)并追加到 dir_content.txt 末尾。

1.3K10
领券