社区
Java SE
帖子详情
JVM能不能自动释放string所占用的存储空间
SimonDW
2005-04-04 09:28:11
Java里string对象是静态保存的。
如果程序中使用的字符串很多的话,这个所占用的空间就会很大。
我做的项目里有这样的问题:
因为要做log,所以会不断产生随时间变化而变化的字符串。
这样的话,就导致了使用了的heap堆不断增长。
如果产生速度比较快的话,就会明显的增长。
我想知道的是,这里的string会不会过一段时间后自动回收
被回收不常使用的部分?
...全文
432
10
打赏
收藏
JVM能不能自动释放string所占用的存储空间
Java里string对象是静态保存的。 如果程序中使用的字符串很多的话,这个所占用的空间就会很大。 我做的项目里有这样的问题: 因为要做log,所以会不断产生随时间变化而变化的字符串。 这样的话,就导致了使用了的heap堆不断增长。 如果产生速度比较快的话,就会明显的增长。 我想知道的是,这里的string会不会过一段时间后自动回收 被回收不常使用的部分?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SimonDW
2005-04-10
打赏
举报
回复
不过,好像我分析错,不是字符串占用的空间,
是用的log4j可能有什么缓存系统。
SimonDW
2005-04-10
打赏
举报
回复
String 是immutable的类,是我弄错了。
到这里问,有时候还是能得到点东西的。
DanielYWoo你给的连接就很有用。
资料找起来,有时候真的是没办法一下子就能找到。
我只是需要足够确定的证据。
其实只要把heap的最大值设小点,等到极限了,
就会执行Full GC, log 里就可以看到变化了。
wyx424
2005-04-06
打赏
举报
回复
你最好是写自己的回收代码,GC是不可靠的,因为没人会知道它什么时候会运行
cuij7718
2005-04-06
打赏
举报
回复
对用StringBuffer,在处理大量的字符串的时候StringBuffer得效果提升很明显
DanielYWoo
2005-04-06
打赏
举报
回复
>>Java里string对象是静态保存的。
要么你说错了,要么就是我理解错你的意思了。constant pool里的虽然是共享的,但绝不是静态的,heap里的就更不是了。
>>你最好是写自己的回收代码,GC是不可靠的
汗...
楼主,先看看这个再问,
http://java.sun.com/docs/hotspot/gc/
如果你懂了eden,generation, full gc, reachable的概念,你根本不用来论坛上问,问也是白问,大多数人都是一知半解来胡弄你的分
kenny1979
2005-04-06
打赏
举报
回复
回复人: wyx424(思远) ( ) 信誉:100 2005-04-06 12:55:00 得分: 0
你最好是写自己的回收代码,GC是不可靠的,因为没人会知道它什么时候会运行
**************************************************************************
内存空间回收能自己写吗? 楼上的指条路!
hongyan2004
2005-04-05
打赏
举报
回复
最好不要用STRING,用STRINGBUFFER更好,
是的,是过一段时间就会被GC回收
yonggui111
2005-04-04
打赏
举报
回复
最好用StringBuffer类,要转换的时候用.toString()方法.
最好不要用 String s = "xxx";
kingfish
2005-04-04
打赏
举报
回复
String s = new String("xxxxxxx");
这样是在heap上分配空间,如果s上没有任何引用, 那么就会被GC收集
水之轮回
2005-04-04
打赏
举报
回复
JAVA里的垃圾回收机制是可以回收String用过后的内存空间,但照你的意思的话还是不要靠JVM的回收机制来回收你的String所花费的内存,因为JAVA里的回收机制并不是很可靠的,你不可能知道它何时才会启动,而且每次都要等到下次运行回收机制时才真正的回收你所不用的内存。
java
string
内存
占用
_
JVM
系列之:
String
,数组和集合类的内存
占用
大小
简介之前的文章中,我们使用JOL工具简单的分析过
String
,数组和集合类的内存
占用
情况,这里再做一次更详细的分析和介绍,希望大家后面再遇到OOM问题的时候不再抱头痛哭,而是可以有章可循,开始吧。数组先看下JOL的...
JVM
--
String
详解,
JVM
中的
String
String
的基本特性 注意:
String
s2 = new
String
(“hello”)方式创建字符串,堆中存放值为hello的对象,同时会在字符串常量池中创建一个hello字符串常量 字符串常量池: 字符串常量池通过固定大小的Hashtable实现...
字符串揭秘,
String
在
JVM
中的存储秘密
字符串揭秘,
String
在
JVM
中的存储秘密
(修改后)Java中的
String
类
占用
多大的内存空间?
char[]数组中的一个char类型的数据
占用
2个字节的空间,所以,只是
String
中的数据就会
占用
2 * n(n为字符串的长度)个字节的空间,再加上空字符串所
占用
的40个字节空间,最终得出一个字符串所
占用
的
存储空间
为: 40 ...
Java 中
String
占用
空间的评估标准
Java 中
String
占用
空间的评估标准
Java SE
62,630
社区成员
307,264
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章