![](https://i-blog.csdnimg.cn/columns/default/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM
文章平均质量分 93
zxcodestudy
Get busy living or get busy dying
展开
-
JVM参数配置
一、Java JVM内存介绍JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处转载 2016-03-02 16:17:10 · 492 阅读 · 0 评论 -
JVM垃圾回收算法与垃圾回收器
JVM内存模型总体架构图程序计数器多线程时,当线程数超过CPU数量或CPU内核数量,线程之间就要根据时间片轮询抢夺CPU时间资源。因此每个线程有要有一个独立的程序计数器,记录下一条要运行的指令。线程私有的内存区域。如果执行的是JAVA方法,计数器记录正在执行的java字节码地址,如果执行的是native方法,则计数器为空。虚拟机栈线程私有的,与线程在同一时间创建。管理J原创 2016-03-02 22:42:53 · 391 阅读 · 0 评论 -
JVM内存模型
按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如原创 2016-03-07 12:40:05 · 345 阅读 · 0 评论 -
JVM调优
在JVM启动参数中,可以设置跟内存、垃圾回收相关的一些参数设置,默认情况不做任何设置JVM会工作的很好,但对一些配置很好的Server和具体的应用必须仔细调优才能获得最佳性能。通过设置我们希望达到一些目标:1.GC的时间足够的小2.GC的次数足够的少3.发生Full GC的周期足够的长 前两个目前是相悖的,要想GC时间小必须要一个更小的堆,要保证GC次数足够少,必须保证一个更大的原创 2017-04-28 08:39:59 · 405 阅读 · 0 评论 -
JDK8 从永久代到元空间
一.永久带到元空间的变迁 其实,移除永久代的工作从JDK1.7就开始了。JDK1.7中,存储在永久代的部分数据就已经转移到了Java Heap或者是 Native Heap。但永久代仍存在于JDK1.7中,并没完全移除,譬如符号引用(Symbols)转移到了native heap;字面量(interned strings)转移到了java heap;类的静态变量(class statics)转移到了原创 2017-04-22 17:54:19 · 6730 阅读 · 6 评论 -
一次线上OOM过程的排查
一.出现问题在前一段时间日常环境很不稳定,前端调用mtop接口会出网络异常或服务不存在的异常。查询了服务器上的HSF会有偶尔挂死的情况,服务器上的接口服务都不可用。于是我们对服务器上的状况进行了排查。二.排查问题的过程在这次的问题排查主要是围绕JVM的内存使用情况,生成对象分布情况以及GC情况来讨论的。中间有一些细节一开始存有疑问,迷雾的排除不算太顺利。首先要感谢下基础架构事业群的右席,井桐,梁希,原创 2016-11-23 00:07:59 · 9469 阅读 · 0 评论 -
JVM编译优化
在部分的商用虚拟机中,Java 程序最初是通过解释器(Interpreter )进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁的时候,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,即时编译器(Just In Time Compiler )会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化。一.HotSpot 内的即时编译器1.解释器和编译器各有各的原创 2017-06-09 00:16:14 · 4887 阅读 · 0 评论 -
Spring Boot引起的“堆外内存泄漏”排查及经验总结
背景为了更好地实现对项目的管理,我们将组内一个项目迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物理内存竟然高达7G,确实不正常。JVM参数配置是“-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+AlwaysPre...转载 2019-02-24 11:21:03 · 1195 阅读 · 0 评论