首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们可以避免在java中使用字符串吗?

我们可以避免在java中使用字符串吗?
EN

Stack Overflow用户
提问于 2011-04-15 13:24:33
回答 4查看 2.9K关注 0票数 2

我们能完全禁用字符串的内嵌吗?它可能没有真正的帮助,但只是一个想法。我认为至少有一点是有用的,即在jvm调优期间,控制perm gen的大小。

例如,如果我发布了一个OSGI框架,任何人都可以添加他们自己的任意数量的bundle,而每个bundle中的string interning都会完全扰乱我的调优参数。(当然,我知道我们应该在给定的固定发行版上进行调优,但仍然...)

任何想法!!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-15 13:28:15

Permgen大小/使用不是现代JVM的问题。当没有对它们的剩余引用时,垃圾收集器可以使用被占用的字符串。

(不,您不能“关闭”字符串字面量的嵌入)。

票数 6
EN

Stack Overflow用户

发布于 2011-04-15 15:04:00

您可以通过在代码中不使用任何字符串文字来禁用大多数字符串的内嵌。您可以改用char[],并从这些字符串中构建字符串。例如。

代码语言:javascript
运行
复制
String hi = new String(new char[] { 'h', 'i' }); // not interned.

正如你所提到的,这只会给你自己创造工作,只会让事情变得更糟。

如果我给出了一个OSGI框架,并且任何人都可以添加他们自己的任何数量的bundle,并且每个bundle的字符串插入都会完全搞乱我的调优参数

如果他们添加捆绑包,他们可能需要更高的最大内存、perm gen大小、直接内存大小、不同的NewSize比率,甚至不同的GC。防止这种情况的唯一方法是阻止OSGi容器中的任何其他模块。

或者您可以这样说,如果您添加了包,您可能需要更改调优参数。

票数 1
EN

Stack Overflow用户

发布于 2013-12-14 03:57:06

从OracleJava7开始,实习生字符串池不再存储在PerGen中。点击此处了解更多信息http://java-performance.info/string-intern-in-java-6-7-8/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5672688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档