相关疑难解决方法(0)

Java 8的字符串重复数据删除功能

由于String在Java中(像其他语言一样)消耗大量内存,因为每个字符占用两个字节,Java 8引入了一个名为String Deduplication的新功能,它利用了char数组是字符串内部的最终事实,因此JVM可以搞砸他们.

到目前为止,我已经阅读了这个例子,但由于我不是一个专业的java编码器,我很难掌握这个概念.

这是它说的,

已经考虑了各种字符串复制策略,但现在实现的策略遵循以下方法:每当垃圾收集器访问String对象时,它会记录char数组.它接受它们的哈希值并将其与对数组的弱引用一起存储.一旦找到另一个具有相同哈希码的String,就会将它们与char进行比较.如果它们匹配,则将修改一个String并指向第二个String的char数组.然后不再引用第一个char数组,并且可以进行垃圾回收.

整个过程当然会带来一些开销,但是受到严格的限制.例如,如果找不到字符串有一段时间的重复项,则不再检查它.

我的第一个问题,

由于最近在Java 8更新20中添加了这个主题,因此仍然缺乏资源,这里是否有人可以分享一些关于如何帮助减少StringJava 消耗内存的实际示例?

编辑:

上面的链接说,

一旦找到另一个具有相同哈希码的String,就会将它们与char进行比较

我的第二个问题,

如果两个哈希码String相同,则Strings已经是相同的,那么为什么对它们进行比较charchar,一旦发现,这两个String具有相同的散列码?

java string java-8

62
推荐指数
3
解决办法
2万
查看次数

如何从没有X11的Linux控制台触发手动Java GC

我需要一种能够从ubuntu上的linux控制台脚本触发完整GC的方法.我知道这是非常糟糕的做法,但没有太多的细节,这使我的服务器保持运行,这只是在我修复实际问题的1或2天,所以我不必在夜间醒来并执行通过jconsole或jvisualvm手动GC.

或者,我必须制作一个鼠标脚本,每3-4小时左右点击一次按钮,这更糟糕.

请帮忙.

java linux garbage-collection

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×2

garbage-collection ×1

java-8 ×1

linux ×1

string ×1