小编cru*_*tex的帖子

我们应该在Java 8下使用G1 GC还是等待Java 9?

Java 8中的G1 GC是否具有一般生产水平的质量?最新的Java 8服务版本中的G1实现(几乎)与Java 9中包含的相同吗?

换一种说法:

  • 现在用Java 8评估应用程序并切换到G1是一个好主意吗?
  • 我们是否可以期待Java 8补丁版本中G1的更新,因此它与Java 9中的版本相同(如果可能的话)?
  • 还是等待Java 9更好,因为行为会有所不同?

java garbage-collection java-8

11
推荐指数
0
解决办法
5800
查看次数

将maven JavaDoc与合理的doclint参数一起使用

关于如何在Java 8中关闭神圣的JavaDoc lint功能有很多信息.信不信由你,今天我决定使用这个功能并修复我的JavaDocs.然而,在其标准配置中,它抱怨每一个可能缺失@param@return.从我在Java 8 javadoc技术文档的JavaDoc文档中看到的,我的选择是-Xdoclint:all,-missing.这应该包括所有检查,但不要对错过的文件机会提出投诉.maven配置如下所示:

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.10.4</version>
        <configuration>
          <additionalparam>-Xdoclint:all,-missing</additionalparam>
          <aggregate>false</aggregate>
        </configuration>
        <reportSets>
          <reportSet>
            <id>default</id>
            <reports>
              <report>javadoc</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>
Run Code Online (Sandbox Code Playgroud)

但是当mvn site我运行时,我得到错误:

[ERROR] Exit code: 1 - javadoc: error - invalid flag: -missing
Run Code Online (Sandbox Code Playgroud)

我怀疑maven中的参数处理是个问题,但引用并没有帮助.

任何想法如何使用这个?以合理的方式检查JavaDoc的任何其他良好实践?

java javadoc maven maven-javadoc-plugin

9
推荐指数
2
解决办法
2522
查看次数

与可变/不可变对象保持一致的进程内缓存与分布式缓存

我听到我的同事说,在缓存不可变的对象(最终的一致性)时,进程内缓存将是更好的选择。外部分布式缓存更适合于可变对象,而您始终希望读取保持一致(强)。

这始终是事实吗?我真的看不到可变性与一致性之间的关系。有人可以帮我理解吗?

java architecture memcached caching distributed-caching

6
推荐指数
2
解决办法
3080
查看次数

如何真正基准测试Java应用程序的内存使用情况

我想在内存使用效率方面比较Java程序的不同实现.有不同的使用场景表示为JUnit测试用例.实际上,所有代码都是开源的:https://github.com/headissue/cache2k-benchmark

获取Java程序的已用内存的一般智慧是:Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()当然也可以使用JMX接口来获取这些值.

但是,所使用的存储器的确定值不可靠.可能的原因:

  • 可能有未收集的垃圾
  • 如果GC没有压实,那就有碎片

到目前为止,我尝试切换到串行GC并Runtime.getRuntime().gc()在读出值之前强制进行垃圾收集.我已将实验代码放在:https://github.com/cruftex/java-memory-benchmark

如果我gc在读取值之前进行了三次调用,我会得到此输出(mvn test | grep loopCount使用jdk1.7.0_51):

testBaseline1: used=1084168, loopCount=0, total=124780544
testBaseline2: used=485632, loopCount=0, total=124780544
testBaseline3: used=483760, loopCount=0, total=124780544
testBaseline4: used=483800, loopCount=0, total=124780544
testBaseline: used=484160, loopCount=0, total=124780544
test100MBytes: used=105341496, loopCount=0, total=276828160
test127MBytes: used=133653088, loopCount=0, total=469901312
test27MBytes: used=28795528, loopCount=0, total=317755392
test10MBytes: used=10969776, loopCount=0, total=124784640
Run Code Online (Sandbox Code Playgroud)

有四个gc电话(如签入),我得到:

testBaseline1: used=483072, loopCount=0, total=124780544
testBaseline2: used=483728, loopCount=0, total=124780544
testBaseline3: used=483768, loopCount=0, total=124780544
testBaseline4: used=483808, …
Run Code Online (Sandbox Code Playgroud)

java memory performance benchmarking garbage-collection

5
推荐指数
1
解决办法
2806
查看次数

javax.cache 按引用存储与按值存储

我是 Java 缓存的新手,我试图了解按值存储按引用存储之间的区别。

我在下面引用了 java.cache 文档中的段落“复制存储在缓存中的条目以及从缓存返回时再次复制条目的目的是允许应用程序继续改变键和值的状态而不会导致侧面 -对缓存所持有的条目的影响。”

上面提到的“副作用”是什么?而在实践中我们又该如何选择存储方式呢?

java caching jcache

3
推荐指数
1
解决办法
1553
查看次数