赵英超的博客

相互学习,共同进步

JVM调优——CMS GC日志分析

最近在学习JVM和GC调优,今天总结下CMS的一些特点和要点,让我们先简单的看下整个堆年轻代和年老代的垃圾收集器组合(以下配合java8完美支持,其他版本可能稍有不同),其中标红线的则是我们今天要着重讲的内容:垃圾回收器的可用组合:  ParNew and CMS"Concurr...

2018-07-11 17:20:19

阅读数:94

评论数:0

JMM 内存模型

多任务和高并发的内存交互多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系...

2018-07-02 17:26:26

阅读数:68

评论数:0

分析内存泄露的一般方法

分析内存泄露的一般步骤     如果发现Java应用程序占用的内存出现了泄露的迹象,那么我们一般采用下面的步骤分析把Java应用程序使用的heap dump下来使用Java heap分析工具,找出内存占用超出预期(一般是因为数量太多)的嫌疑对象必要时,需要分析嫌疑对象和其他对象的引用关系。查看程序...

2018-05-28 19:28:23

阅读数:168

评论数:0

jvm GC日志分析详解

JVM和GC调优,总结下CMS的一些特点和要点,让我们先简单的看下整个堆年轻代和年老代的垃圾收集器组合(以下配合java8完美支持,其他版本可能稍有不同),其中标红线的则是我们今天要着重讲的内容:垃圾回收器的可用组合:  ParNew and CMS"Concurrent Mar...

2018-05-18 11:36:59

阅读数:234

评论数:0

jvm 常用工具

jps查看所有的jvm进程,包括进程ID,进程启动的路径等等。我自己也用PS,即:ps -ef | grep javajstack观察jvm中当前所有线程的运行情况和线程当前状态。系统崩溃了?如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和na...

2018-05-18 11:20:00

阅读数:104

评论数:0

JVM 栈分配与TLAB

我们在学习使用Java的过程中,一般认为new出来的对象都是被分配在堆上,但是这个结论不是那么的绝对,通过对Java对象分配的过程分析,可以知道有两个地方会导致Java中new出来的对象并一定分别在所认为的堆上。这两个点分别是Java中的逃逸分析和TLAB(Thread Local Allocat...

2018-05-18 11:08:20

阅读数:538

评论数:0

JVM G1详解

java程序性能当我们调优java程序时,通常的目标有两个: 响应能力 或者 吞吐量响应能力响应能力指一个程序或者系统对请求的是否能够及时响应。 比如: 一个桌面UI能多快的响应一个事件; 一个网站能够多快返回一个页面请求; 数据库能够多快返回查询的数据;对于这类对响应能力敏感的场景,长时间的停顿...

2018-05-17 17:21:25

阅读数:1589

评论数:0

jvm详解

JVM内存模型总体架构图程序计数器多线程时,当线程数超过CPU数量或CPU内核数量,线程之间就要根据时间片轮询抢夺CPU时间资源。因此每个线程有要有一个独立的程序计数器,记录下一条要运行的指令。线程私有的内存区域。如果执行的是JAVA方法,计数器记录正在执行的java字节码地址,如果执行的是nat...

2018-05-17 09:46:53

阅读数:68

评论数:0

JVM堆外内存

广义的堆外内存说到堆外内存,那大家肯定想到堆内内存,这也是我们大家接触最多的,我们在jvm参数里通常设置-Xmx来指定我们的堆的最大值,不过这还不是我们理解的Java堆,-Xmx的值是新生代和老生代的和的最大值,我们在jvm参数里通常还会加一个参数-XX:MaxPermSize来指定持久代的最大值...

2018-05-17 09:43:50

阅读数:50

评论数:0

堆外内存与堆内内存详解

堆外内存一直是Java业务开发人员难以企及的隐藏领域,究竟他是干什么的,以及如何更好的使用呢?那就请跟着我进入这个世界吧。一、什么是堆外内存1、堆内内存(on-heap memory)回顾堆外内存和堆内内存是相对的二个概念,其中堆内内存是我们平常工作中接触比较多的,我们在jvm参数中只要使用-Xm...

2018-05-07 17:14:42

阅读数:1480

评论数:0

Java 内存模型之堆内存管理

Java 内存模型之堆内存(Heap) 一、背景知识:内存类型介绍  1、什么是 Perm Gen? Perm Gen : Permanent Generation Perm Gen 区是一个特殊的JVM内存区,因为它用来存储用来描述 Class 的 元数据(Class 可以不属于Java语言的一...

2018-04-23 15:01:27

阅读数:79

评论数:0

虚拟机内存结构

虚拟机内存结构JVM的主要结构如下图所示方法区和堆由所有线程共享,其他区域都是线程私有的程序计数器(Program Counter Register)类似于PC寄存器,是一块较小的内存区域,通过程序计数器中的值寻找要执行的指令的字节码,由于多线程间切换时要恢复每一个线程的当前执行位置,所以每个线程...

2018-04-18 16:28:21

阅读数:42

评论数:0

Java的四种引用方式

Java的四种引用方式java内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象。java对象的引用包括  强引用,软引用,弱引用,虚引用Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有利于...

2018-04-17 17:38:00

阅读数:49

评论数:0

JVM 引用机制

理解 Java 的 GC 与 幽灵引用           Java 中一共有 4 种类型的引用 : StrongReference、 SoftReference、 WeakReference 以及 PhantomReference (传说中的幽灵引用 呵呵), 这 4 种类型的引用与 GC 有着...

2018-04-17 17:35:39

阅读数:41

评论数:0

JVM MAT使用分析详解

MAT简介MAT是一款非常强大的内存分析工具,在Eclipse中有相应的插件,同时也有单独的安装包。在进行内存分析时,只要获得了反映当前设备内存映像的hprof文件,通过MAT打开就可以直观地看到当前的内存信息。一般说来,这些内存信息包含:所有的对象信息,包括对象实例、成员变量、存储于栈中的基本类...

2018-04-17 15:11:19

阅读数:347

评论数:0

JVM优化:生产环境参数实例及分析

java application项目(非web项目) 改进前: -Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=78-XX:...

2017-11-14 19:51:56

阅读数:131

评论数:0

JVM调优实战

java application项目(非web项目) 改进前: -Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=78-XX:...

2017-10-18 19:36:15

阅读数:161

评论数:0

最全JVM7.8分析和优化

1. JVM堆内存划分 这两天看到下面这篇文章的图不错。 一图读懂JVM架构解析 1.1 JDK7及以前的版本 其中最上一层是Nursery内存,一个对象被创建以后首先被放到Nursery中的Eden内  存中,如果存活期超两个Survivor之后就会被转...

2017-05-07 19:03:24

阅读数:1059

评论数:1

JVM性能监控和调优

参考:http://www.cnblogs.com/java-zhao/category/776216.html 1. JVM性能监控 1、定位系统问题 依据 GC日志堆转储快照(heapdump/hprof文件)线程快照(threaddump/javacore文件)运行日志异常堆栈...

2017-05-07 15:27:19

阅读数:370

评论数:0

JVM 参数介绍

功能开关: 参数 默认值或限制 说明 参数 默认值 功能 -XX:-AllowUserSignalHandlers 限于Linux和Solaris,默认不启用 允许为java进程安装信号处理器,信号处理参见类:sun...

2017-05-02 16:41:15

阅读数:178

评论数:0

提示
确定要删除当前文章?
取消 删除