随笔分类 -  JVM

摘要:本文来自于爱宝贝丶分享, 来源:https://my.oschina.net/zhangxufeng/blog/3017521 1. Full GC次数过多 2. CPU过高 3. 不定期出现的接口耗时现象 4. 某个线程进入WAITING状态 5. 死锁 6. 小结 1. Full GC次数过多 阅读全文
posted @ 2019-07-11 10:40 割肉机 阅读(1869) 评论(0) 推荐(0) 编辑
摘要:Java中的所有类,都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中。在写程序的时候,我们几乎不需要关心类的加载,因为这些都是隐式装载的,除非我们有特殊的用法,像是反射,就需要显式的加载所需要的类。 类装载方式,有两种 : 1.隐式装载 阅读全文
posted @ 2019-07-11 09:14 割肉机 阅读(8624) 评论(0) 推荐(0) 编辑
摘要:1. Java 堆空间 2. GC 开销超过限制 3. 请求的数组大小超过虚拟机限制 发生频率:2颗星 4. Perm gen 空间 5. Metaspace 6. 无法新建本机线程 7. 杀死进程或子进程 8. 发生 stack_trace_with_native_method 1. Java 堆 阅读全文
posted @ 2019-07-10 16:03 割肉机 阅读(3577) 评论(0) 推荐(0) 编辑
摘要:转载:https://my.oschina.net/u/3627055/blog/2995973 背景 生产环境有二台阿里云服务器,均为同一时期购买的,CPU、内存、硬盘等配置相同。具体配置如下: 节点 CPU 内存 硬盘 其它 A 2CPU 4G 普通云盘 Centos6.4 64位+JDK1.8 阅读全文
posted @ 2019-07-09 17:15 割肉机 阅读(826) 评论(0) 推荐(1) 编辑
摘要:前言 大家都知道,jvm在启动的时候,会执行默认的一些参数。一般情况下,这些设置的默认参数应对一些平常的项目也够用了。但是如果项目特别大了,需要增加一下堆内存的大小、或者是系统老是莫明的挂掉,想查看下gc日志来排查一下错误的原因,都需要咱们手动设置这些参数。 各个参数介绍 1.verbose:gc 阅读全文
posted @ 2019-07-08 13:52 割肉机 阅读(1306) 评论(0) 推荐(0) 编辑
摘要:1.问题 1、如何理解类文件结构布局? 2、如何应用类加载器的工作原理进行将应用辗转腾挪? 3、热部署与热替换有何区别,如何隔离类冲突? 4、JVM如何管理内存,有何内存淘汰机制? 5、JVM执行引擎的工作机制是什么? 6、JVM调优应该遵循什么原则,使用什么工具? 7、JPDA架构是什么,如何应用 阅读全文
posted @ 2019-04-15 16:32 割肉机 阅读(1155) 评论(2) 推荐(0) 编辑
摘要:比如我下载了 一、怎么添加jar到本地仓库呢?步骤:1.cmd命令进入该jar包所在路径2.执行命令:mvn install:install-file -Dfile=lucene-queryparser-4.6.1.jar -DgroupId=org.apache.lucene -Dartifact 阅读全文
posted @ 2019-04-04 09:18 割肉机 阅读(17230) 评论(0) 推荐(1) 编辑
摘要:引子 最近遇到很多朋友过来咨询G1调优的问题,我自己去年有专门学过一次G1,但是当时只是看了个皮毛,因此自己也有不少问题。总体来讲,对于G1我有几个疑惑,希望能够在这篇文章中得到解决。 G1出现的初衷是什么? G1适合在什么场景下使用? G1的trade-off是什么? G1的详细过程? 如何理解G 阅读全文
posted @ 2018-12-28 16:02 割肉机 阅读(523) 评论(0) 推荐(0) 编辑
摘要:一、数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。 基本类型的变量保存原始值,即:他代表的值就是数值本身; 而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基本类型包括:byte,short,int,l 阅读全文
posted @ 2018-12-28 14:27 割肉机 阅读(294) 评论(0) 推荐(0) 编辑
摘要:一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法 阅读全文
posted @ 2018-08-31 08:25 割肉机 阅读(2731) 评论(0) 推荐(1) 编辑
摘要:Trace跟踪参数 -verbose:gc -XX:+printGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:log/gc.log // 指定GC log的位置,以文件输出 -XX:PrintHeapAtGC // 每一次GC后,都打印堆 阅读全文
posted @ 2018-08-30 09:23 割肉机 阅读(349) 评论(0) 推荐(0) 编辑
摘要:前面学习的都是和类加载相关的知识,接下来学习的则和GC相关的知识,都是JVM的几个重点块。 零、在IDE的后台打印GC日志: 既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多技术含量。 既然如此,那么在IDE的控制台打印GC日志是必不可少的了。现 阅读全文
posted @ 2018-08-30 09:22 割肉机 阅读(326) 评论(0) 推荐(0) 编辑
摘要:概述 metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所致,看到大家讨论来讨论去,看得出很多人对metaspace还是模棱两可,不是很了解它,因此我觉得有必要写篇文 阅读全文
posted @ 2018-08-30 09:09 割肉机 阅读(1013) 评论(0) 推荐(0) 编辑
摘要:前言 昨天谢照东大神在群里提出一个问题:怎么查看Metaspace里具体包含的是什么,起因是他的某个服务设置了-XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m,但是通过jstat -gcutil pid查看M的值为98(M的=MU/MC),即Metas 阅读全文
posted @ 2018-08-30 09:07 割肉机 阅读(15326) 评论(0) 推荐(1) 编辑
摘要:https://mp.weixin.qq.com/s/1VP7l9iuId_ViP1Z_vCA-w 某天早上,毛老师在群里问「cat 上怎么看 gc」。 好好的一个群 看到有 GC 的问题,立马做出小鸡搓手状。 之后毛老师发来一张图。 老年代内存占用情况 图片展示了老年代内存占用情况。 第一个大陡坡 阅读全文
posted @ 2018-08-30 09:00 割肉机 阅读(4161) 评论(0) 推荐(0) 编辑
摘要:一、元空间替换持久代 1.1、持久代 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Ins 阅读全文
posted @ 2018-08-30 08:58 割肉机 阅读(37231) 评论(1) 推荐(6) 编辑
摘要:触发MinorGC(Young GC) 虚拟机在进行minorGC之前会判断老年代最大的可用连续空间是否大于新生代的所有对象总空间 1、如果大于的话,直接执行minorGC 2、如果小于,判断是否开启HandlerPromotionFailure,没有开启直接FullGC 3、如果开启了Hanler 阅读全文
posted @ 2018-08-22 10:59 割肉机 阅读(14688) 评论(0) 推荐(3) 编辑
摘要:在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章、书籍和演讲来介绍我所做的工作。在整个过程中,经常对 Minor、Major、和 Full GC 事件的使用感到困惑。这也是我写这篇博客的原因,我希望能清楚地解释这其中的一些疑惑。 文章要求读者熟悉 JVM 内置 阅读全文
posted @ 2018-08-22 10:45 割肉机 阅读(9920) 评论(0) 推荐(0) 编辑
摘要:JVM架构图分析 下图:参考网络+书籍,如有侵权请见谅 (想了解Hadoop内存溢出请看: Hadoop内存溢出(OOM)分类、参数调优化) JVM被分为三个主要的子系统 (1)类加载器子系统(2)运行时数据区(3)执行引擎 1. 类加载器子系统 Java的动态类加载功能是由类加载器子系统处理。当它 阅读全文
posted @ 2018-08-21 14:24 割肉机 阅读(1128) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/hencehong/p/3252166.html 我们开发的实际情况是:我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA 阅读全文
posted @ 2018-08-18 18:04 割肉机 阅读(385) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示