分类目录:Jvm

以下是分类 Jvm 下的所有文章

如何查看线上的Java进程使用的GC收集器类型

使用下面的命令可以查看是否使用了指定类型GC收集器,结果中有+号则使用这种收集器,否则有-号表示没有使用这个收集器。 并行: jinfo -flag UseParallelGC 13727jinfo -flag UseParallelOldGC 13727(fallback to 串行) 并发: jinfo -flag UseParNewGC 13727(fallback to 串行)jinfo -flag UseConcMarkSweepGC 137……

吐槽JDK自带Math类关于对数API的设计

引言 今天在实现一个算法的时候,需要求对数,于是翻了一下Math类里面的API定义,确实有求对数的API,但是,看来看去总觉得这些API设计有些怪怪的,不符合常人的思维,API也没有自文档化,也就是看了API,不知道应该怎么用。 数学相关知识 为了吐槽吐得有理由据,提前和一个学数学的同事确认了一下对数相关知识: log(x,y……

GC堆最大最小内存随笔

今天公司里面又有人讨论Xms和Xmx设置成一样好呢?还是不一样好呢?这是一个老生常谈的问题,当然,也有很多人知道设置成同样的值会更好些,可是又不知道为什么,还有些人尽管告诉他们设置成一样的好,他们也不太相信,为了能更容易说服一些在技术上比较倔强的人,在网上随便搜索了一下资料,总结如下: Xms和Xmx应该设置……

从类的热替换到Spring环境的热替换

最近,一个同事问我一个问题,同事问Spring是否能发现环境的配置变化并且重新加载并热替换,从我的直觉来讲,答案是: 1. Spring应该没有提供这样的功能,因为这种功能并不是大众需要的,是个很少见但是偶尔会有的。 2. 这种功能可以自己实现,用一个监听器或者定时器,发现配置文件变化,则重新加载环境,并且替换原有的……

【翻译】你应该知道的5个令人激动的Java项目

本文为译文,原文连接:Five exciting Java Projects you should know about 每个Java领域的开发人员都有可能使用到这5个项目并且从中受益。2011年在圣何塞大会上曾提名过这些项目。我之所以选择这些项目,是因为我在多个项目中都会使用到他们,并且他们能够帮助我解决现实的问题,最为开发人员,他们能帮助我们解决每天……

JDK启动时检查设置的最大堆内存

大家都知道Xms和Xmx是设置JVM堆的最小值和最大值,给人的印象是启动时候只要有Xms这么大的内存既可,随着内存占用变大,会占用更多的内存,那么如果启动的时候系统没有Xmx这么大的内存,但是有Xms这么大的内存,Jvm会继续运行吗? 答案是No,如果Jvm启动的时候发现Xmx大于系统总体内存,则提示这个内存设置值大于系统可表……

Java语言中一个字符占几个字节

一直以来,我坚定的认为Java中的字符使用Unicode16作为内码,Unicode16是16位定长字符编码。有一天一个新同事和我说Unicode16不是定长的,不会吧?难道世界观又要被改变,经过新同事的介绍,并且介绍了一篇知呼文章,终于理解了什么为什么Unicode16是变长字符集,原来在Unicode16规范定义若干年后又扩展了“增补字符集”,……

浅析JDK1.7新增的同步工具Phaser

JDK提供的同步功能经历了几个时代,JDK1.4之前的实现基本还处于石器时代,其提供的线程方法suspend, resume, stop等可能会产生死锁,到了JDK1.4已经不再提倡使用这些方法,所以,并发程序的开发人员只能使用Object类提供的wait/notify, 以及语言级别的synchronized关键字,以及可以保证内存可见性的volatile,这个时代基……

【转载】【经典】Java中不同的并发实现的性能比较

本文转载自:Java中不同的并发实现的性能比较 英文原文来源于:Fork/Join Framework vs. Parallel Streams vs. ExecutorService: The Ultimate Fork/Join Benchmark 关于IO和计算任务对并行性的影响和分析,请参考我的博客文章:无状态和并行性是可伸缩性的两大基石   Fork/Join框架在不同配置下的表现如何? 正如……

查找Java进程内CPU利用率最高的线程的工具(show-busiest-java-threads.sh)

查找Java进程内CPU利用率最高的线程,本脚本来自一个叫候鸟树的网友。 使用方法: ./show-busiest-java-threads.sh -p 30780 -c 10 显示帮助: ./show-busiest-java-threads.sh -h 源码: #!/bin/bash # @Function # Find out the highest cpu consumed threads of java, and print the stack of these threads. # ……

【转载】【经典】Linux与JVM的内存关系分析

 本文转载自:http://tech.meituan.com/linux-jvm-memory.html 引言 在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用大约800m。从表面上,物理内存应该是足够使用的;但实际运行的情况是,会发生大量使用SWAP(说明物理……

Tomcat/Java服务器的日志总结

一个线上服务如果没有日志,就像出游的皇帝没有御陵军来保驾护航一样,可见日志对于一个线上服务是多么的重要,日志可以用来生成监控图,可以用来做报警,这里总结一下每个Tomcat/Java服务器应该提供的各种日志: 1. Tomcat localhost_access_log.*.txt日志,这份日志清晰的记录了HTTP服务请求的来源,响应时间,返回的HT……

如何利用iostats -xk命令的输出计算IO并发数

我们在一些低端的机器上,使用的是普通的SATA硬盘,那么IO一定是串行的,也就是服务完一次IO再服务下次IO,但是,在一些高性能的服务器上,服务器大都使用RAID,RAID可以使用RAID0,RAID01,RAID3,RAID5等进行条带化,使IO进行一定的并行化,这样能够有效的提高效率,本文就讨论如何使用iostats命令来计算IO并行数。 对于串……

Memcache的三种Java客户端的对比和选择

Memcache作为一个著名的缓存项目支持多种语言和多种形式的客户端,作为一个Java开发人员,我们必须了解各种客户端的不同,这有利于我们在技术选型的时候充分的评估其优缺点,从而选择最佳的缓存产品以及缓存客户端,最终对技术选型进行合理的决策。 1.官方提供的基于传统阻塞io由Greg Whalin维护的客户端memcached client……

使用CMS垃圾收集器产生的问题和解决方案

在之前的一篇文章《CMS vs. Parallel GC》里通过实验的方式对比了并行和并发GC的优缺点,在文章结尾提到,CMS并行GC是大多数应用的最佳选择,然而, CMS并不是完美的,在使用CMS的过程中会产生2个最让人头痛的问题: 1. promotion failed 2. concurrent mode failure 第一个问题promotion failed是在进行Minor GC时,Su……

CMS vs. Parallel GC

GC策略在G1收集器还没有成熟,并且没有得到广泛应用的情况下,目前主要有串行,并发(CMS)和并行(Parallel)三种,其中串行主要应用在客户端的实例中,在CPU资源比较稀缺的情况下,适合使用串行GC,这样可以避免过多的线程切换浪费系统资源,从而可以达到较高的性价比,但是对于高并发的服务器系统,并发和并行垃圾收集策略……