metaspace OOM问题解决

1. 什么是metaspace

JDK8中去掉了原来的永久代,而用metaspace来替代。并且metaspace现在是使用了netive memory。

原来放在永久代里面的东西也全部放到元数据区了。元数据区主要包含以下内容:

name and fields of the class: 存放类名字、成员变量相关的元数据

methods of a clas......

第五章:调优案例分析与实战

本文是深入理解Java虚拟机-读书笔记系列的文章,查看所有文章目录可以点击该超链接查看。

1. 高性能硬件上的程序部署策略

一个PV比较大的网站,有时候长时间失去响应,这是由于GC造成。JVM默认使用PS这种吞吐量优先收集器,一次full GC停顿高达14秒。程序设计导致大量较大的文档数据驻留在内存。

心得:如果full GC比较少、绝大多数对象的存活时间都比较短,才建议使用较大的堆。否则GC的开销会比较大,有较长的时间停顿。

2. 集群间同步导致的内存溢出

由于集群同步大量数据,导致数据过多,而超过内存限制。

心得:

发生OOM的时候自动生成堆du......

第四章:虚拟机性能监控与故障处理工具

本文是深入理解Java虚拟机-读书笔记系列的文章,查看所有文章目录可以点击该超链接查看。

这部分的内容之前我有文章写过了,具体可以查看:

JVM调优排错工具jps、jstack、jmap、jhat、jstat、jvisualvm等的使用

PS: jhat在JAVA9中要被移除,该命令的功能可以用其他命令代替,所以可以不用看了。

关于《深入理解Java虚拟机》的书中第四章,以下内容可以了解下:

HSDIS反汇编插件: 工具下载的话可以去HLLVM看看,具体用法可以参考书上的P112-P114的内容

书上没有详细写thread dump和heap dump如何操......

开启JMX的JVM参数设置

需要开启JMX监控,可以在JAVA程序的JVM选项中添加如下参数(不开启SSL):

# 根据自己需要可以修改端口号

-Dcom.sun.management.jmxremote.port=7723

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false

JVM调优排错工具jps、jstack、jmap、jhat、jstat、jvisualvm等的使用

1. 介绍

“纸上得来终觉浅,绝知此事要躬行。”最近发现自己在JVM调优工具的使用上还存在知识盲区,故尽快调研了一些资料,总结一下这些工具的使用,以供以后自己复习查看。

JDK提供的小巧工具简单介绍一览如下:

名称

作用

jps

JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程

jstat

JVM Statistics Monitoring Tool,显示收集HptSpot虚拟机各方面的运行数据

jinfo

Configuration Info For java,显示虚拟机配置信息

jmap

Memory......