string-interning相关内容

Python会实习生字符串吗?

在Java中,显式声明的字符串由JVM进行插值,因此对同一字符串的后续声明将导致指向同一String实例的两个指针,而不是两个单独的(但相同的)字符串. 例如: public String baz() { String a = "astring"; return a; } public String bar() { String b = "astring" ..
发布时间:2020-05-08 18:50:53 Python

字符串实习在Java 7+中如何工作?

因此,我意识到我要问的问题与一个又一次被打死的话题有关,但是,即使在阅读了我能找到的所有答案和文档后,我仍然很友善对字符串实习感到困惑.也许是由于我对JVM缺乏了解;可能是由于Java 7中引入的更改使上述许多答案和文档贬值了.无论哪种方式,我都被困住了,希望有人能帮助我更清楚地理解这个概念... String a = "text"; String b = new String("text" ..
发布时间:2020-04-25 07:10:58 Java开发

常见的JavaScript实现是否使用字符串实习?

常见的JavaScript引擎,例如V8和WebKit的JavaScriptCore,使用字符串实习来获取JavaScript字符串?或者他们实际上在内存中保留了多个相同字符串的实例? 解决方案 是的。通常,JS源中的任何文字字符串,标识符或其他常量字符串都是实体。然而,实现细节(确切地说是实例内容)会有所不同,以及发生实习的时间。 请注意,字符串值与String对象不同,字符串对象 ..

搜索字符串实习的成本和文字字符串的声明

两个问题。 当我们声明文字字符串时,我们搜索堆的字符串池中是否有相同的字符串。 这也是一个实习生(类 String 的方法实习生)? 在我看来,每个文字字符串声明都需要二进制搜索,所以当 n 是池中现有字符串的数量时,它至少要花费 log(n)。如果池中有许多字符串,则可能成本很高。 (可能需要权衡搜索成本和内存?)从这个角度来看,声明mant文字字符串可能很危险。 搜索成本的重要性 ..
发布时间:2019-01-02 15:42:49 Java开发

我不应该做`String s = new String(“一个新的字符串”);`在Java中,即使是自动字符串实习?

好的,这个问题是这个问题的延伸 Java字符串:" String s = new String(" silly");" 上述问题与此问题相同,但我有一个新的疑点。 根据 Effective Java 和答案在上面的问题中,我们应该不做 String s = new String(“一个新字符串”); ,因为这将创建不必要的对象。 我不确定这个结论,因为我认为Java正在做自 ..
发布时间:2019-01-02 15:00:43 Java开发

Java字符串实习的替代方案

由于Java的默认字符串实习有很多坏消息,我正在寻找替代方案。 你能否建议一个可以替代Java的API字符串实习?我的应用程序使用Java 6.我的要求主要是通过实习避免重复字符串。 关于坏消息: 字符串实习生是通过本机方法实现的。并且C实现使用大约1k个条目的固定大小,并且对于大量字符串进行非常差的扩展。 Java 6在Perm gen中存储实习字符串。因此不是GC并且可能导 ..
发布时间:2018-12-17 10:49:11 Java开发

关于java的实习生

我的问题是,如果实习生正在使用字符串和字符串,它有一个 SPC(字符串池常量),而实习生概念也适用于整数, 那么是否有任何整数池常量?不是它的工作方式如何? class InternExample { public void print() { Integer I = 10; 整数j = 10; String c =“a”; String s =“a”; Sys ..
发布时间:2018-12-17 10:02:10 Java开发

真实生活,在Java中使用String.intern()的实际例子?

我已经看过很多原始的例子,描述了String intern()的工作原理,但是我还没有看到一个可以从中受益的真实用例。 我能想到的唯一情况是拥有一个接收大量请求的Web服务,由于僵化的架构,每个请求都非常相似。通过intern()在这种情况下使用请求字段名称,可以显着减少内存消耗。 任何人都可以提供在生产环境中使用intern()的示例取得了巨大成功?也许是一个流行的开源产品中的一个例 ..
发布时间:2018-12-11 22:42:10 Java开发

我们可以避免在java中实现字符串吗?

我们可以完全禁用字符串的实习。它可能不是真的有用,但只是一个想法。我可以想到至少有一点可以提供帮助,即在jvm调整期间,控制perm gen的大小。 例如如果我发布一个OSGI框架,任何人都可以添加任意数量的自己的捆绑包,每个捆绑字符串实习可以完全搞砸我的调整参数。 (当然我知道我们应该调整给定的固定发行版,但仍然......) 任何想法!! 解决方案 Permgen的大小/用 ..
发布时间:2018-12-07 19:00:59 Java开发

哪个调试工具可以列出内部化的字符串?

我正在寻找一个可以列出已经内化的字符串的调试工具?理想情况下,我想加上一个标记,并在该标记后添加一个字符串列表。 提前致谢。 解决方案 也许最简单的方法是使用字节码查看器。任何实例化的字符串都将出现在包含字符串文字的类文件的constant_pool中。例如,在我回答的另一个StackOverflow问题的最近一个类文件中,我的代码中有以下字符串文字: “sun.awt.noeras ..
发布时间:2018-12-07 17:58:30 Java开发

Java的String#intern()方法是如何实现的?

我试着查看Java的 String #intern()方法,但它是 public native String intern(); 一般情况下,如何实施实习?在String的情况下? 解决方案 对于Sun Java,从 JVM_InternString 开始,在线 jvm.cpp 。从技术上讲,实际的String方法是在 java / lang / String.c ,但它会立即调用 ..
发布时间:2018-12-05 11:31:13 Java开发

字符串文字的行为令人困惑

String literals的行为在下面的代码中非常混乱。 我可以理解第1行,第2行和第3行是是,但为什么第4行 false ? 当我打印哈希码时两者都是一样的。 class Hello { public static void main(String [] args ) { String hello =“Hello”,lo =“lo”; System.out. ..
发布时间:2018-12-05 11:14:44 Java开发

何时在String文字上使用intern()

我看到很多这样的遗留代码: A类{ public static final String CONSTANT = “值” .intern(); ... } 我认为没有任何理由intern(),就像在Javadoc中一样,可以读取:“所有文字字符串和字符串值常量表达式都是实例化的。”是否有一些这样的意图,可能是在语言的过去修订中? 解决方案 这是一种确保 CO ..
发布时间:2018-11-27 22:25:49 Java开发

Java中的字符串比较和字符串实习

何时应该将 String s作为对象进行比较,何时应该使用 equals 方法?为了确保,我总是使用等于,但这似乎不是很有效。在什么情况下我可以确定 string1 == string2 是否可以安全使用? 谢谢! 解决方案 你应该总是使用等于。您可以确定 string1 == string2 将在以下情况下有效: 你'已经确定你已经确定了其他方式的不同值(例如,你使用的是从集 ..
发布时间:2018-11-26 21:17:33 Java开发

什么是Java String interning?

什么是Java中的 String Interning ,什么时候我应该使用它?为什么? 解决方案 http:// docs。 oracle.com/javase/7/docs/api/java/lang/String.html#intern() 基本上做String.intern()on一系列字符串将确保具有相同内容的所有字符串共享相同的内存。因此,如果你有'john'出现1000次 ..
发布时间:2018-11-26 12:13:33 Java开发