java中String变动的内存问题

纵马饮白虹 2016-09-08 04:08:51
都说String变动后会新建一个位置,如:
String sql=“xxxxx”;sql=“yyyyyyyyyyyy”;
在这个过程中"xxxxx"被释放了吗?
典型的对象释放是将对象置为null,
如果我在sql=“yyyyyyyyyyyy”;之后加上sql=null,“xxxxx”被释放了吗?还是说只释放了“yyyyyyyyyyyy”。
...全文
218 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kainnnn 2016-09-12
  • 打赏
  • 举报
回复
不会马上被释放 会被标记
tifacxbc 2016-09-11
  • 打赏
  • 举报
回复
"xxxxx"应该是被释放了吧。。去找本关于java虚拟机的书看吧
  • 打赏
  • 举报
回复
l楼说的很明白,
bree06 2016-09-08
  • 打赏
  • 举报
回复
String sql=“xxxxx”;理论上xxxxx应该是在常量池中(常量池中有xxxx则直接将引用记数+1,常量池中没有时会创建字符串并放入常量池), sql = null; 或者sql = "yyyy"; 之后如果仍然有变量引用该空间则不会被标记, 如果此时没有被引用且一段时间内也没有被引用的话会被标记, 之后才会被GC扫描回收.

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧