Java之JVM监控工具分享 JVM的基本知识常用的也就是 ,`内存区域、分配、OOM GC JVM参数调优` 几个链接自己看: "内存区域&类加载机制" "分配策略&垃圾回收算法、收集器" 今天结合代码讲一讲常用的java自带工具讲解,这些命令一般都是jdk/lib/tools.jar中。用来监控 ...
分类:
编程语言 时间:
2019-03-22 13:06:34
阅读次数:
499
Java虚拟机(JVM)内部定义了程序在运行时需要使用到的内存区域 1、线程间共享的内存区域 (1)HEAP (堆) 大多数应用,堆都是Java虚拟机所管理的内存中最大的一块,它在虚拟机启动时创建,此内存唯一的目的就是存放对象实例。由于现在垃圾收集器采用的基本都是分代收集算法,所以堆还可以细分为新生 ...
分类:
编程语言 时间:
2019-03-21 20:19:39
阅读次数:
188
原理:找出不再继续使用的变量,然后释放掉其占用的内存。 策略1:标记清除 当变量进入环境(可以理解为一个函数开始执行了)时,就将这个变量标记为“进入环境”,从逻辑上讲,不能释放掉进入环境的变量,而当变量离开环境的的时候,则将其标记为离开环境。 垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标 ...
分类:
Web程序 时间:
2019-03-16 21:59:51
阅读次数:
187
垃圾收集 程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭;这几个区域的内存分配和回收都具备稳定性,不需要过多的考虑回收的问题。而Java堆和方法区则不一样。 Java堆中存储了几乎所有的对象实例,垃圾收集器进行对堆的回收之前,需要判断这些对象是否还存活 一。判断对象是否存活 判断对象 ...
分类:
编程语言 时间:
2019-03-16 16:53:16
阅读次数:
193
介绍 Go语言是编译型、静态类型的类C的语言,并带有GC(垃圾收集器,garbage collection) Go采用汇编语言作为编译后的底层语言 Go编译时很快,运行时不再需要加载额外的依赖 Go必须指定数据类型,但除了在声明变量的时候显式指定数据类型,也可以让Go自己去推断数据类型 Go是类C型 ...
分类:
其他好文 时间:
2019-03-13 19:33:01
阅读次数:
175
一、垃圾收集器的分类 1、次收集器 Scavenge GC,指发生在新生代的GC,因为新生代的Java对象大多都是朝生夕死,所以Scavenge GC非常频繁,一般回收速度也比较快。当Eden空间不足以为对象分配内存时,会触发Scavenge GC。 一般情况下,当新对象生成,并且在Eden申请空间 ...
分类:
编程语言 时间:
2019-03-13 18:16:25
阅读次数:
270
Filebeat的配置文件是/etc/filebeat/filebeat.yml,遵循YAML语法。具体可以配置如下几个项目: Filebeat Output Shipper Logging(可选) Run Options(可选) 这个Blog主要讲解Filebeat的配置部分,其他部分后续会有新的 ...
分类:
其他好文 时间:
2019-03-13 16:46:41
阅读次数:
351
1. JVM内存模型 Java虚拟机在程序执行过程会把jvm的内存分为若干个不同的数据区域来管理,这些区域有自己的用途,以及创建和销毁时间。 先来看一下Java程序具体执行的过程 上图中的运行数据区(Runtime Data Areas)即为JVM内存区域,其结构如下图: 各区域存储的具体信息: 1 ...
分类:
编程语言 时间:
2019-03-12 16:53:36
阅读次数:
228
1. 引用计数GC算法 每个对象都会有对应的计数器来计算对象引用,但JVM不会采用该策略,因为不能解决对象相互引用的回收。 设置VM参数,打印GC日志 部分GC日志: [GC (System.gc()) [PSYoungGen: 6758K->584K(38400K)] 6758K->592K(12 ...
分类:
其他好文 时间:
2019-03-07 12:51:55
阅读次数:
159
一个局部变量的生命周期只存在于其自身类中。如下的例子可以发现,局部变量只能存在于声明该变量的方法中。 对于实例变量,其寿命与对象的寿命相同。对象未“死”,实例变量也未“死”。 引用变量如果活着,那么对象也会活着,当对对象的引用死了,那么该对象也会从堆上被踢开,变成垃圾被垃圾收集器(GC)所回收。 有 ...
分类:
其他好文 时间:
2019-03-04 11:11:37
阅读次数:
175