我已经在运行的Java应用程序上运行了jmap-heap
命令,下面是我得到的信息:
看来68MB的permgen中有大约89MB的内部字符串。是否存在未存储在permgen中的内部字符串?
来自Java7版本说明:
在JDK7中,内部字符串不再分配在Java堆的永久代中,而是分配在Java堆的主要部分(称为年轻代和老代)以及应用程序创建的其他对象中。这一更改将导致更多的数据驻留在主Java堆中,而在永久生成中的数据更少,因此可能需要调整堆大小。大多数应用程序由于这一变化将只看到堆使用方面相对较小的差异,但加载许多类或大量使用String.intern()方法的较大应用程序将看到更显著的差异。
问题内容: 我已经在运行的Java应用程序上运行了命令,这是我得到的: C:\ Program Files \ Java \ jdk1.7.0_05 \ bin> jmap -heap 2384附加到进程ID 2384,请等待…调试器已成功附加。检测到服务器编译器。 JVM版本为23.1-b03 ,在新一代中使用并行线程。 使用线程局部对象分配。 并发标记扫描GC 堆配置: MinHeapFree
Swift 4中的字符串是一个有序的字符集合,例如“Hello,World!”。 它们由Swift 4数据类型String表示,后者又表示Character类型值的集合。 创建一个字符串 您可以使用字符串文字或创建String类的实例来创建String,如下所示 - // String creation using String literal var stringA = "Hello, Swif
问题内容: 以下语句之间有什么区别 尽管类是class,但是为什么我们需要创建一个字符串“ CONSTANT”变量作为最终变量? 问题答案: 在这种情况下,该变量只能分配一次。再次为其分配不同的对象会导致编译错误。 我认为,造成混淆的原因是该关键字可以在几种不同的上下文中使用: final class:该类不能被子类化。 最终方法:该方法不能被覆盖。 最终变量:该变量只能分配一次。 有关每种情况的
问题内容: 我创建了一个stringio对象,并且其中包含一些文本。我想清除其现有值并重用它,而不是调用它。反正有这样做吗? 问题答案: 不必费心清除它,只需创建一个新的文件-更快。 方法 Python 2 这是我将如何发现此类情况的方法: 所以,你想要。但是初始化一个新的StringIO可能更便宜(更容易)。请参阅下面的基准。 Python 3 重要的是要注意,现在 文件的当前位置保持不变 ,而
我发现一个很好的正则表达式检测音乐和弦。然而,当我添加“例如”和“been this way”之类的歌词或任何以音符开头的单词时,它就会被匹配。如何忽视这些? 音乐和弦的正则表达式: 链接到测试正则表达式:here
问题内容: 我在自己的环境中不断检测PermGen中的OOM: Java 6的 jboss-4.2.3 网络应用程序不大 我知道String.intern()问题-但是我没有足够有价值的用法。MaxPermGen大小的增加并没有费力(从128 Mb到256 Mb)。 还有什么其他原因可以为PermGen调用OOM?在这种情况下(策略,工具等)哪种调查方案是最佳的? 谢谢你的帮助 问题答案: 看到这