Java 8中的G1 GC是否具有一般生产水平的质量?最新的Java 8服务版本中的G1实现(几乎)与Java 9中包含的相同吗?
换一种说法:
关于如何在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程序的不同实现.有不同的使用场景表示为JUnit测试用例.实际上,所有代码都是开源的:https://github.com/headissue/cache2k-benchmark
获取Java程序的已用内存的一般智慧是:Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()
当然也可以使用JMX接口来获取这些值.
但是,所使用的存储器的确定值不可靠.可能的原因:
到目前为止,我尝试切换到串行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 缓存的新手,我试图了解按值存储与按引用存储之间的区别。
我在下面引用了 java.cache 文档中的段落“复制存储在缓存中的条目以及从缓存返回时再次复制条目的目的是允许应用程序继续改变键和值的状态而不会导致侧面 -对缓存所持有的条目的影响。”
上面提到的“副作用”是什么?而在实践中我们又该如何选择存储方式呢?
java ×5
caching ×2
architecture ×1
benchmarking ×1
java-8 ×1
javadoc ×1
jcache ×1
maven ×1
memcached ×1
memory ×1
performance ×1