本文为《深入理解Java虚拟机》读书笔记,加入了一些自己的见解。 Jvm内存溢出异常就是我们常说的OOM,即java.lang.OutOfMemoryError,当然还包括java.lang.StackOverflowError。 那么它和内存泄漏有什么区别与联系呢? 对于内存泄漏,维基百科的定义是:在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。 对应于Java虚拟机…
原文地址 在关键的业务系统里,除了继续追求技术人员最爱的高吞吐与低延时之外,系统的稳定性与出现问题时排查的便捷性也很重要。 这是本文的一个原则,后面也会一次又一次的强调,所以与网上其他的文章略有不同,请调优高手和运维老大们多指引。 前言1,资料 学习开源项目的启动脚本是个不错的主意,比如Cassandra家的, 附送一篇解释它的文章。 JVM调优的"标准参数"的各种陷阱 R大的文章,在JDK6时写…
该文章来自于阿里巴巴技术协会(ATA)精选文章。 大家都有过遇到线上程序LOAD突然狂飙的场景,要排查到为何狂飙,我们当务之急就是要找到导致CPU飙升的原因。如果是进程级的应用,如Nginx、Apache等都还比较容易排查,但如果是JVM中的某个线程导致的,估计有人就要开始抓瞎了。 很多人都或多或少的知道有这么一个脚本,能帮你大致定位到现场导致LOAD飙升的JVM线程,脚本大概如下。 #!/bin…
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 A、 jps(Java Virtual Machine Process Status Tool) jps主要用来输出JVM中运行的进程状态信…
堆栈空间设置 -XX:+PrintGCDetails -Xms: 初始堆大小 -Xmx: 最大堆大小 -Xmn: 新生代大小 NewSize=MaxNewSize -XX:NewSize: 新生代初始堆大小 -XX:MaxNewSize: 新生代最大堆大小 -Xss: 线程栈大小 -XX:PermSize: 永久代(方法区)初始值 -XX:MaxPermSize: 永久代最大值 -XX:NewRa…