![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 80
caoliangbo
这个作者很懒,什么都没留下…
展开
-
MaxTenuringThreshold 参数
MaxTenuringThreshold这个参数用于控制对象能经历多少次Minor GC才晋升到旧生代,默认值是15,那是不是意味着对象要经历15次minor gc才晋升到旧生代呢,来看下面的一个例子。public class GCTenuringThreshold{public static void main(String[] args) throws Exception{GCMemory...原创 2011-09-03 18:28:52 · 697 阅读 · 0 评论 -
JVM 参数设置
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms3...原创 2014-11-02 21:56:37 · 175 阅读 · 0 评论 -
JVM 之CMS参数大全
JVM命令行参数分为三种类型:标准选项(Java Virtual Machine Specification里定义的参数),非标准选项(以-X为前缀,不强制JVM实现),非稳定选项(以-XX为前缀,可能在某些版本被移除)CMS相关选项类型默认值备注-XX:+UseConcMarkSweepGCbooleanfalse老年代采用CMS收集器收集-XX:+...原创 2014-11-04 17:23:17 · 1558 阅读 · 0 评论 -
详谈年轻代
很少有专门研究年轻代的文章,这里有一篇不错,但不详细,待我以后有空补充下。来源:http://shellblog.sinaapp.com/?p=786 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样...原创 2014-11-07 11:27:00 · 131 阅读 · 0 评论 -
JVM性能优化
一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。 ...原创 2014-11-07 12:09:33 · 98 阅读 · 0 评论 -
JVM gc 名词误解解惑
虽然网上有很多关于java gc的文章,但有很多名词经常混淆,估计很多人被搞晕了。无意间找到一个大婶总结的。写的很好,知识面很广。见下面:HotSpot VM的GC组老人之一Jon Masamitsu很久之前就写过blog讲解这个:https://blogs.oracle.com/jonthecollector/entry/our_collectors 简单来说,有这么多东西反映了Ho...原创 2014-11-09 11:40:40 · 142 阅读 · 0 评论 -
继续阅读GC日志
阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多技术含量。在本书的第1版中没有专门讲解如何阅读分析GC日志,为此作者收到许多读者来信,反映对此感到困惑,因此专门增加本节内容来讲解如何理解GC日志。每一种收集器的日志形式都是由它们自身的实现所决定的,换而言之,每个收集器的日志格式都可以不一样。但虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共...原创 2014-11-09 11:46:59 · 137 阅读 · 0 评论 -
JVM GC 再深入一点
这篇文章写的不错,大多来自于深入java虚拟机,确实比很多文章都深入一点,直接拷贝吧。引用自:http://blog.csdn.net/dc_726/article/details/7934101 垃圾回收包含的内容不少,但顺着下面的顺序捋清知识也并不难。首先要搞清垃圾回收的范围(栈需要GC去回收吗?),然后就是回收的前提条件如何判断一个对象已经可以被回收(这里只重点学习根...原创 2014-11-10 18:14:41 · 135 阅读 · 0 评论 -
CMS收集详解
以下内容摘自:《深入理解Java虚拟机:JVM高级特性与最佳实践》第3章垃圾收集器与内存分配策略 CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的Java应用都集中在互联网站或B/S系统的服务端上,这类应用尤其重视服务的响应速度,希望系统停顿时间最短,以给用户带来较好的体验。CMS收集器就非常符合这类应用的需求。从...原创 2014-11-18 22:40:43 · 1077 阅读 · 0 评论 -
ParNew收集器详解
以下摘自:《深入理解Java虚拟机:JVM高级特性与最佳实践》第3章垃圾收集器与内存分配策略ParNew收集器其实就是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为包括Serial收集器可用的所有控制参数(例如:-XX:SurvivorRatio、 -XX:PretenureSizeThreshold、-XX:HandlePromotionFailure等)、收集...原创 2014-11-18 22:42:02 · 3826 阅读 · 0 评论 -
Parallel Scavenge收集器详解
Parallel Scavenge收集器是一个新生代收集器,它也是使用复制算法的收集器,又是并行的多线程收集器……看上去和ParNew都一样,那它有什么特别之处呢?Parallel Scavenge收集器的特点是它的关注点与其他收集器不同,CMS等收集器的关注点是尽可能地缩短垃圾收集时用户线程的停顿时间,而Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throug...原创 2014-11-18 22:56:40 · 4384 阅读 · 2 评论 -
阅读CMS 垃圾回收日志
原文地址 作者: poonam 译者:严亮 校对:梁海舰 在CMS GC 时,使用参数-XX:+PrintGCDetails 和 -XX:+PrintGCTimeStamps 会输出很多日志信息,了解这些信息可以帮我们更好的调整参数,以获得更高的性能。我们来看下在JDK1.4.2_10 中CMS GC日志示例:39.910: [GC 39.910: [ParNew: 2617...原创 2014-11-02 21:54:26 · 389 阅读 · 0 评论 -
问题排查记录-linux
### 以下所有命令都要先sudo su admin 批量搜索日志 pgm -A -b -f juhost "grep 'getFloorJuIds' /home/admin/app/logs/app.log|tail -n 1" 查看gc 执行详细 /opt/xxx/java/bin/jstat -gcutil `pgrep -u admin java`...原创 2016-08-05 12:02:06 · 280 阅读 · 0 评论 -
HeapDumpOnOutOfMemoryError使用
web应用程序部署在jboss容器里,性能测试出现outofmemory异常后即jboss exit程序,研发想打印异常时调用栈信息。 怎么办呢? 在run.conf 加入JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError " 然后执行run.sh重启jboss. 也有更土的办法,就是不断的kill ...原创 2011-09-03 18:31:25 · 731 阅读 · 0 评论 -
java Singleton 的使用详解
概念:在Java应用程序中,一个类Class只有一个实例存在运用:1)系统资源,如文件路径,数据库链接,系统常量等2)全局状态化类,类似AutomicInteger的使用优缺点:1)节省内存有利于垃圾回收2)只能使用在特定的环境下,受限制于JVM和容器 单例作用范围的前提是在一个ClassLoad下。所以像分布式应用EJB就要用其它的方式来解决单例问题。...原创 2013-03-21 16:15:54 · 140 阅读 · 0 评论 -
BTrace使用总结
一、背景 在生产环境中可能经常遇到各种问题,定位问题需要获取程序运行时的数据信息,如方法参数、返回值、全局变量、堆栈信息等。为了获取这些数据信息,我们可以通过改写代码,增加日志信息的打印,再发布到生产环境。通过这种方式,一方面将增大定位问题的成本和周期,对于紧急问题无法做到及时响应;另一方面重新部署后环境可能已被破坏,很难重新问题的场景。 二、BTrace功能 ...原创 2013-03-27 21:01:17 · 82 阅读 · 0 评论 -
BTrace使用简介
很多时候在online的应用出现问题时,很多时候我们需要知道更多的程序的运行细节,但又不可能在开发的时候就把程序中所有的运行细节都打印到日志上,通常这个时候能采取的就是修改代码,重新部署,然后再观察,但这种方法对于online应用来说不是很好,另外一方面如果碰到不好改的代码,例如引用的其他的外部的包什么的,就很麻烦了,BTrace就是一个可以在不改代码、不重启应用的情况下,动态的查看程序运行细节...原创 2013-03-27 21:05:45 · 72 阅读 · 0 评论 -
Java性能优化之垃圾回收(GC)
Java性能优化之垃圾回收(GC)事先声明一下:虽说SUN公司已经被Oracle吞并了,但是出于习惯,同时也为了偷懒节省打字,以下仍然称之为SUN公司。JVM的内 存在Java虚拟机规范中(具体章节请看http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html#1732 ),提及了如下几种类型的...原创 2012-08-10 11:48:25 · 138 阅读 · 0 评论 -
JVM启动参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受...原创 2012-11-21 12:08:41 · 121 阅读 · 0 评论 -
JVM启动参数大全
JVM启动参数大全 jdk1.4.2 JVM官方地址:http://java.sun.com/j2se/1.4.2/docs/guide/vm/index.html标准和非标注参数(for windows):http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html 非stable参数:http://java.sun.co...原创 2012-11-21 12:18:14 · 117 阅读 · 0 评论 -
用Memory Analyzer tool(MAT)分析内存泄漏(一)
前言 在平时工作过程中,有时会遇到OutOfMemoryError,我们知道遇到Error一般表明程序存在着严重问题,可能是灾难性的。所以找出是什么原因造成OutOfMemoryError非常重要。现在向大家引荐Eclipse Memory Analyzer tool(MAT),来化解我们遇到的难题。如未说明,本文均使用Java 5.0 on Windows XP SP...原创 2012-11-21 16:53:12 · 86 阅读 · 0 评论 -
Memory Analyzer tool(MAT)分析内存泄漏(二)
前言在使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果。在本文中,将介绍MAT如何根据heap dump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。一开始不得不说说ClassLoader,本质上,它的工作就是把磁盘上的类文件读入内存,然后调用java.lang.ClassLoader.defineClass方法...原创 2012-11-21 16:54:02 · 92 阅读 · 0 评论 -
打印线程详细信息并按CPU占用排序
好久没来写了,不过太好用了,记录下#!/bin/kshtypeset top=${1:-10}typeset pid=${2:-$(pgrep -u $USER java)}typeset tmp_file=/tmp/java_$pid_$$.trace$JAVA_HOME/bin/jstack $pid > $tmp_fileps H -eo user,pid...原创 2014-05-28 17:20:41 · 307 阅读 · 0 评论 -
JVM垃圾回收器总览
懒得写,引用自:http://blog.csdn.net/chjttony/article/details/7883748 Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK1.6中Sun HotSpot虚拟机的垃圾收集器如下:图中如果...原创 2014-11-18 23:02:43 · 114 阅读 · 0 评论