java实践_Java怪异实践

java实践

总览

Java中有许多实践使我感到困惑。 这里只是一些。 使用-Xmx和-Xms

选项-Xmx广泛用于设置最大内存大小。 如Java HotSpot VM Options中所述,以-X开头的选项是非标准的(不保证所有VM实施都支持该选项),并且在以后的JDK发行版中,如有更改,恕不另行通知。

因此,您会认为这种广泛使用的选项将不再是非标准的。 实际上,有一个标准选项-mx和类似的-ms。 我不知道为什么这些标准选项没有得到更广泛的使用,甚至没有记载。

仅将NIO用于非阻塞IO

非阻塞IO是用于套接字的NIO的新功能。 但是,NIO套接字的默认行为是阻止。 文件仅在NIO中被阻止。 NIO2提供了一个异步接口,但是通过将您的请求传递给ExecutorService来实现(这实际上是在作弊,因为它什么也做不了您无法做的事情)

我个人更喜欢阻止NIO。 它仅在二进制连接数较少时才适用,但是按恕我直言,这是一个选项,无法获得足够的效果。

使用32位JVM节省内存

使用32位JVM保存的内存量远远少于您的想象。 现代64位JVM默认情况下最多使用32位引用,最大堆大小为32 GB。 您不太可能希望拥有更大的堆大小(如果只是为了避免很长的完整GC时间)

与64位JVM相比,32位JVM的对象标头仍然较小,但是差别很小。 64位JVM可以使用更多,更大的寄存器(在AMD / Intel x64系统上),并且可以使用更大的地址空间,从而减少内存限制。

使用线程使一切更快

使用多个线程可以提高CPU利用率,并减少IO延迟的影响。 它不能解决所有性能问题。 它不会使磁盘运行得更快,不会增加网络带宽,不会增加L3缓存的大小,不会增加CPU到主内存的带宽或使数据库显着更快的速度。

同样,使所有内容并发也不会有太大区别。 当您只有8个核心时,是否需要1000个并发集合? 不管您有多少个线程,一次都只能运行8个线程,如果您有1000个集合,则很有可能两个线程将使用同一集合。

对关键资源有选择地使用并发。 否则,您不仅有增加开销和降低应用程序速度的风险,而且还带来引入的复杂性增加得多的风险。

参考:来自Vanilla Java博客的JCG合作伙伴 Peter Lawrey在Java上的奇怪实践


翻译自: https://www.javacodegeeks.com/2012/06/odd-practices-in-java.html

java实践

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值