JVM日志示例分析

引言: JVM分析和优化是Java技术体系中的高大上的内容,其实这个东西没有那么神秘和高深,只是大部分童鞋没有机会真正接触它们,从而对它们有一个深入理解。这里通过一个小题目,来展示如何来看JVM输出的日志信息,并得出JVM几个设置变量的设置信息。

1. 题目的提出,请分析最有可能的JVM的参数设置。

Heap

def new generation   total 6464K, used 115K [0x34e80000,0x35580000, 0x35580000)

eden space 5760K,   2% used[0x34e80000, 0x34e9cd38, 0x35420000)

from space 704K,   0% used[0x354d0000, 0x354d0000, 0x35580000)

to   space 704K,   0% used [0x35420000, 0x35420000, 0x354d0000)

tenured generation   total 18124K, used 8277K [0x35580000,0x36733000, 0x37680000)

the space 18124K,  45% used[0x35580000, 0x35d95758, 0x35d95800, 0x36733000)

compacting perm gen  total 16384K, used 16383K [0x37680000,0x38680000, 0x38680000)

the space 16384K,  99% used[0x37680000, 0x3867ffc0, 0x38680000, 0x38680000)

ro space 10240K,  44% used[0x38680000, 0x38af73f0, 0x38af7400, 0x39080000)

rw space 12288K,  52% used [0x39080000, 0x396cdd28, 0x396cde00,0x39c80000)

2.  JVM参数分析

2.1 -XX:+PrintGCDetails

由于JVM需要打印出详细的GC回收和内存分布信息,故需要设置此变量

2.2  -Xmx 最大堆空间设置

def new generation为新生代的信息, tenured generation 代表的是年老代的信息。 其目前使用分配空间为6M.  [0x34e80000,0x35580000, 0x35580000): 分别代表最小地址,当前分配的空间地址,最大的空间地址。当前使用的空间是6M + 18M = 24M.

由于x34e80000~~0x376800000之间分配的空间为40M,故当前的分配的空间不是设置的最大空间值,所以可知其设置了最大的内容空间,而且其最大空间xmx和最小空间xms不是一致的。

故其-Xmx40M. 其无法得知是否已经设置xmx。

2.3  -Xmn年轻带空间设置

分析def new generation的信息,当前内存使用情况6464k,  eden space 5760k,  from/to space: 704k. 其最大空间地址和当前的地址空间位置一样:0x35580000,但是目前使用的内存并未完全使用完毕,故可推测知道,其设置年轻带的内存大小。

其最大空间地址0x35580000 -  最小空间地址0x34e80000 = 7M.  故其-Xmn为7M.

2.4 maxpermsize

compacting perm gen表示永久代的信息,存放class信息,静态方法和变量,常量信息等。 其最大空间地址和当前空间地址一样,故可知其内存已经被全部分配了。另外,从使用率99%可知,基本使用完毕了。

其最大空间地址0x38680000  - 最小空间地址0x37680000 = 16.7M. 故可知其最大的PermSize已经设置过了,但无法得知其初始设置的permsize大小。

-XX:maxpermsize=17M.

3.  总结

以上的文本示例来自于JVM中的内存分配片段,通过以上的分析,可以帮助大家来了解当前的内存状态信息,从而可以利用以上信息,来进行JVM的优化和调优。

JVM参数: -Xmx40M -Xmn7M    -XX:maxpermsize=17M -XX:+PrintGCDetails verbose:gc

时间: 2024-10-21 23:18:47

JVM日志示例分析的相关文章

2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(教程详情)

章节一 2018年 ELK课程计划和效果演示1.课程安排和效果演示简介:课程介绍和主要知识点说明,ES搜索接口演示,部署的ELK项目演示es: localhost:9200kibana http://localhost:5601/ 章节二 elasticSearch 6.2版本基础讲解到阿里云部署实战 2.搜索引擎知识介绍和相关框架简介:介绍搜索的基本概念,市面上主流的搜索框架elasticSearch和solr等对比什么是搜索:在海量信息中获取我们想要的信息传统做法:1.文档中使用系统的Fin

RPM安装包-Spec文件参数详解与示例分析

spec文件是整个RPM包建立过程的中心,它的作用就如同编译程序时的Makefile文件. 1.Spec文件参数 spec文件包含建立一个RPM包必需的信息,包括哪些文件是包的一部分以及它们安装在哪个目录下.这个文件一般分为如下的几节: (1) Preamle(序言) 序言包含用户请求包的信息时所显示的内容.它可以包含包的功能描述.包的软件版本.版权信息和所属的包组等.Summary 是一行关于该软件包的描述,Name 是该软件包的基名,Version 是该软件的版本号,Release 是 RP

JVM日志和参数的理解

jvm日志和参数 一:理解GC日志格式,读GC日志的方法 1:开启日志 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/gc.log -XX:+UseGCLogFileRotation  启用GC日志文件的自动转储 (Since Java) -XX:NumberOfGClogFiles=1  GC日志文件的循环数目 (Since Java) -XX:GCLogFileSize=1M  控制GC日志文件的大小

jvm运行时分析

官方手册: http://docs.oracle.com/javase/7/docs/     ----> http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java.html   java命令的各种选项的说明 参考书籍: <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)> 首先说下JVM的内存堆结构,看下图: 主要由 方法区Permanent Generation + 新生代Eden + 新生代幸存区S

基于Elasticsearch+Fluentd+Kibana的日志收集分析系统

我们平时分析log直接在日志文件中 grep.awk 就可以获得自己想要的信息,此方法效率低下,生产中需要集中化的日志管理,所有服务器上的日志收集汇总 Elasticsearch一个节点(node)就是一个Elasticsearch实例,一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数据和负载.当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据.集群中一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更,例如

2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(目录)

章节一  2018年 ELK课程计划和效果演示 1.课程安排和效果演示 简介:课程介绍和主要知识点说明,ES搜索接口演示,部署的ELK项目演示 章节二 elasticSearch 6.2版本基础讲解到阿里云部署实战 2.搜索引擎知识介绍和相关框架 简介:介绍搜索的基本概念,市面上主流的搜索框架elasticSearch和solr等对比 什么是搜索:在海量信息中获取我们想要的信息 3.新版本 elasticSearch 6.1.2介绍 简介:介绍ES的主要特点和使用场景,新特性讲解 4.windo

JVM源码分析之堆外内存完全解读

概述 广义的堆外内存 说到堆外内存,那大家肯定想到堆内内存,这也是我们大家接触最多的,我们在jvm参数里通常设置-Xmx来指定我们的堆的最大值,不过这还不是我们理解的Java堆,-Xmx的值是新生代和老生代的和的最大值,我们在jvm参数里通常还会加一个参数-XX:MaxPermSize来指定持久代的最大值,那么我们认识的Java堆的最大值其实是-Xmx和-XX:MaxPermSize的总和,在分代算法下,新生代,老生代和持久代是连续的虚拟地址,因为它们是一起分配的,那么剩下的都可以认为是堆外内存

Unity Surface Shader 示例分析

对于Unity中的表面着色器(Surface Shader),它的代码整体结构如下所示: Shader "name" { Properties { // 第一部分 } SubShader { // 第二部分 } Fallback "Diffuse" // 第三部分 } 第一部分 Properties 数据块 它的作用是充当数据的接口,将外部的数据(资源)引入进来,以供着色器内部使用.在这里,我们可以定义的数据类型如下所示: (1) _MainTex ( "

三层浅析及示例分析

什么是三层结构?所谓三层结构,不是物理上的三层划分,也不是简单的模块划分,而是逻辑上的三层,是在客户端和数据库访问之间加入了一个中间层,形成逻辑三层结构. 三层都是哪三层?它们的作用是什么?三层结构包含:表示层UI,业务逻辑层BLL,数据访问层DAL.1 显示层,就是软件的显示部分,主要是客户端,通常表现为WEB或窗体.主要功能:接受用户输入信息.显示系统输出信息.为用户提供一个交互界面. 2 业务逻辑层,系统主要功能部分,主要处理软件的业务逻辑,处理数据. 3 数据访问层,用于对数据库的操作,