Metaspace 之三--jdk8 Metaspace 调优
摘要:简介 jdk8的元空间的初始大小是21M,如果启动后GC过于频繁,请将该值设置得大一些。 更多Meatspace内容见《Metaspace 之一:Metaspace整体介绍(永久代被替换原因、元空间特点、元空间内存查看分析方法)》 如果应用启动时,FGC出现了,可能是由于metaspace导致,例如
阅读全文
posted @
2019-01-16 13:50
duanxz
阅读(25179)
推荐(1) 编辑
java问题之1:Java的Finalizer引发的内存溢出
摘要:本文介绍的是Java里一个内建的概念,Finalizer。你可能对它对数家珍,但也可能从未听闻过,这得看你有没有花时间完整地看过一遍java.lang.Object类了。在java.lang.Object里面就有一个finalize()的方法。这个方法的实现是空的,不过一旦实现了这个方法,就会触发J
阅读全文
posted @
2019-01-16 10:48
duanxz
阅读(6277)
推荐(0) 编辑
被kill问题之2:Docker环境下Java应用的JVM设置(容器中的JVM资源该如何被安全的限制)
摘要:《被kill问题之1:进程物理内存远大于Xmx的问题分析》 《被kill问题之2:Docker环境下Java应用的JVM设置(容器中的JVM资源该如何被安全的限制)》 问题 Java与Docker的结合,虽然更好的解决了application的封装问题。但也存在着不兼容,比如Java并不能自动的发现
阅读全文
posted @
2019-01-10 11:04
duanxz
阅读(8148)
推荐(2) 编辑
运行java飞行记录器JFR(java flight recorder)
摘要:JFR 上面讲到的工具都是作为快速的查看诊断工具的。如果要深入分析问题,可以选择使用内置的Java飞行记录器:Java Mission Control。 转储JFR需要三步: 1. 创建一个包含了你自己配置的JFR模板文件。运行jmc, 然后Window->Flight Recording Temp
阅读全文
posted @
2018-03-09 14:38
duanxz
阅读(20576)
推荐(3) 编辑
JVM异常之:堆溢出OutofMemoryError
摘要:1、堆溢出 Java 堆内存的OutOfMemoryError异常是实际应用中最常见的内存溢出异常情况。出现Java 堆内存溢出时,异常堆栈信息“java.lang.OutOfMemoryError”会跟着进一步提示“Java heap space”。 要解决这个区域的异常,一般的手段是首先通过内存
阅读全文
posted @
2018-03-07 14:57
duanxz
阅读(1733)
推荐(0) 编辑
JVM异常之:方法区溢出OutOfMemoryError: PermGen space
摘要:1、方法区溢出(Perm持久代溢出) 在jdk1.6及之前的版本中,常量池放在Perm区也即是方法区中,所以在jdk1.6版本中,常量池溢出可以说是方法区溢出。 示例一: 方法区溢出的示例见《JVM体系结构之七:持久代、元空间(Metaspace) Metaspace 之三--了解String类的i
阅读全文
posted @
2018-03-07 14:57
duanxz
阅读(2293)
推荐(1) 编辑
JVM异常之:栈溢出StackOverflowError
摘要:在java虚拟机规范中,虚拟机栈和本地方法栈都会出现StackOverflowError和OutofMemoryError,程序计数器是java虚拟机中唯一一块不会产生error的内存区域。 一、StackOverflowError(栈溢出) StackOverflowError代表的是,当栈深度超
阅读全文
posted @
2018-03-06 17:54
duanxz
阅读(34807)
推荐(2) 编辑
Heap堆分析(堆转储、堆分析)
摘要:一、堆直方图 减少内存使用时一个重要目标,在堆分析上最简单的方法是利用堆直方图。通过堆直方图我们可以快速看到应用内的对象数目,同时不需要进行完整的堆转储(因为堆转储需要一段时间来分析,而且会消耗大量磁盘空间)。 直方图擅长识别由分配了一两个特定类的过多实例所引发的问题。例如应用中的内存压力是由一些特
阅读全文
posted @
2018-03-06 12:20
duanxz
阅读(15093)
推荐(0) 编辑
被kill问题之1:进程物理内存远大于Xmx的问题分析
摘要:《被kill问题之1:进程物理内存远大于Xmx的问题分析》 《被kill问题之2:Docker环境下Java应用的JVM设置(容器中的JVM资源该如何被安全的限制)》 问题描述 最近经常被问到一个问题,”为什么我们系统进程占用的物理内存(Res/Rss)会远远大于设置的Xmx值”,比如Xmx设置1.
阅读全文
posted @
2016-12-09 10:41
duanxz
阅读(7694)
推荐(1) 编辑
十二、jdk工具之jcmd介绍(堆转储、堆分析、获取系统信息、查看堆外内存)
摘要:目录 一、jdk工具之jps(JVM Process Status Tools)命令使用 二、jdk命令之javah命令(C Header and Stub File Generator) 三、jdk工具之jstack(Java Stack Trace) 四、jdk工具之jstat命令(Java V
阅读全文
posted @
2016-11-29 22:22
duanxz
阅读(26247)
推荐(3) 编辑
java安全沙箱(四)之安全管理器及Java API
摘要:java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及Java API 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管
阅读全文
posted @
2016-11-28 10:02
duanxz
阅读(2750)
推荐(0) 编辑
java安全沙箱(二)之.class文件检验器
摘要:java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及Java API 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管
阅读全文
posted @
2016-11-28 10:01
duanxz
阅读(1158)
推荐(0) 编辑
java安全沙箱(三)之内置于Java虚拟机(及语言)的安全特性
摘要:java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及Java API 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管
阅读全文
posted @
2016-11-28 10:01
duanxz
阅读(532)
推荐(0) 编辑
java安全沙箱(一)之ClassLoader双亲委派机制
摘要:java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及Java API 本篇博客主要介绍“类加载体系”的基本原理;如需了解其它几类安全机制可以通过上面的博客
阅读全文
posted @
2016-11-28 10:00
duanxz
阅读(5635)
推荐(1) 编辑
Java数组在内存中是如何存放的
摘要:阅读目录 一维数组 二维数组 数组对象及其引用存放在内存中的哪里? 阅读目录 一维数组 二维数组 数组对象及其引用存放在内存中的哪里? Java中有两种类型的数组: 基本数据类型数组; 对象数组; 当一个对象使用关键字“new”创建时,会在堆上分配内存空间,然后返回对象的引用,这对数组来说也是一样的
阅读全文
posted @
2016-11-25 18:06
duanxz
阅读(10761)
推荐(1) 编辑
内存分配有哪些策略
摘要:1、内存分配有哪些策略 我们从编译原理讲起,不同的开发环境、开发语言都会有不同的策略。一般来说,程序运行时有三种内存分配策略:静态的、栈式的、堆式的 静态存储是指在编译时就能够确定每个数据目标在运行时的存储空间需求,因而在编译时就可以给它们分配固定的内存空间。 这种分配策略要求程序代码中不允许有可变
阅读全文
posted @
2016-11-25 17:43
duanxz
阅读(3065)
推荐(0) 编辑
虚拟机中的锁优化简介(适应性自旋/锁粗化/锁削除/轻量级锁/偏向锁)
摘要:高效并发是JDK 1.6的一个重要主题,HotSpot虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁削除(Lock Elimination)、锁膨胀(Lock Coarsening)、轻量级锁(Lightweight Locki
阅读全文
posted @
2016-11-24 23:26
duanxz
阅读(817)
推荐(1) 编辑
JVM之数据类型
摘要:1.概述 Java虚拟机的数据类型可分为两大类:原始类型(Primitive Types,也称为基本类型)和引用类型(Reference Types)。Java虚拟机用不同的字节码指令来操作不同的数据类型 。 2.原始类型 原始类型是最基本的元素,用于构成复杂的引用类型。与世间万物一样,都是由最基本
阅读全文
posted @
2016-11-24 21:05
duanxz
阅读(2167)
推荐(0) 编辑
JVM参数(二)参数分类和即时(JIT)编译器诊断
摘要:在这个系列的第二部分,我来介绍一下HotSpot JVM提供的不同类别的参数。我同样会讨论一些关于JIT编译器诊断的有趣参数。 JVM 参数分类 HotSpot JVM 提供了三类参数。第一类包括了标准参数。顾名思义,标准参数中包括功能和输出的参数都是很稳定的,很可能在将来的JVM版本中不会改变。你
阅读全文
posted @
2016-11-24 18:14
duanxz
阅读(1229)
推荐(0) 编辑