
JVM
梦江河
聊聊高并发,数据库,存储
展开
-
Aspectj&JavaAgent
Aspectj织入方式编译时织入编译后织入LTW织入Aspectj的LTW织入利用了JavaAgent机制Aspectj织入方式原创 2021-08-15 11:41:53 · 415 阅读 · 0 评论 -
深入Apollo配置中心的Meta Server
上面是Apoll的部署架构图1)Client和Portal都是通过域名访问Nginx LB,Nginx LB根据请求url喝负载均衡找到一台Meta Server;2)Meta Server暴露了3个http接口给Client和Portal,分别是发现Config Service、Admin Service、Meta Server;3)Eureka是默认的注册中心,可以替换成比如zk;4)Meta Server可以想象成是注册中心的客户端,提供标准服务发现接口给Client和Portal,虽然默认.原创 2021-08-08 18:45:35 · 2827 阅读 · 0 评论 -
JVM-触发FullGC原因总结
触发fgc:1)大对象直接进入老年代(serial/parnew),但没有足够空间;2)System.gc();3)minor gc之前的空间分配担保机制;4)minor gc后的存活对象 大于survivor区域一半,剩余对象要放在老年代,但老年代没有足够空间;5)长期存活的对象进入老年代,原本在survivor区的对象,经过一次minor gc后,年龄+1,到达最大年龄阈值,晋升到老年代,但老年代空间不足;6)minor gc后触发对象动态年龄判断机制,把大龄对象放在老年代,但老年代空间不足原创 2021-04-14 09:02:27 · 990 阅读 · 0 评论 -
G1 gc种类
类比CMS的ygc、FullGC、老年代gc:cms ygc=g1 ygccms old gc=g1 mixed gccms fullgc=g1 fullgc并发收集存在cms的old gc和g1的mixed gc,其他阶段都是单线程/多线程+STW收集原创 2021-03-29 10:38:47 · 290 阅读 · 0 评论 -
G1垃圾收集器优缺点
G1 优点:停顿时间短;用户可以指定最大停顿时间;不会产生内存碎片:G1 的内存布局并不是固定大小以及固定数量的分代区域划分,而是把连续的Java堆划分为多个大小相等的独立区域 (Region),G1 从整体来看是基于“标记-整理”算法实现的收集器,但从局部 (两个Region 之间)上看又是基于“标记-复制”算法实现,不会像 CMS (“标记-清除”算法) 那样产生内存碎片。G1 缺点:G1 需要记忆集 (具体来说是卡表)来记录新生代和老年代之间的引用关系,这种数据结构在 G1 中需要占用大量的原创 2021-03-27 23:58:49 · 2441 阅读 · 1 评论 -
jvm杂谈2
堆出现OOM怎么排查?1)事前设置参数-XX: +HeapDumpOnOutOf-MemoryError ;2)利用MAT等工具分析堆转储快照;3)分析OOM的对象是不是必须的对象,判断是否出现内存泄漏,如果对象无用证明是;内存泄漏怎么排查(看GC Roots引用链,找出对应代码);4)如果不是内存泄漏,看堆内存大小是否过小;方法区在jdk7以前的实现是永久代,字符串常量池在永久代,jdk7把字符串常量池转移到堆,jdk8方法区实现是元空间,使用本地内存,方法区主要存储类型信息,就是cl原创 2021-03-22 17:34:10 · 102 阅读 · 0 评论 -
谈谈Jvm的安全点与安全区域
安全点与安全区域安全点就是指代码中一些特定的位置,当线程运行到这些位置时它的状态是确定的,这样JVM就可以安全的进行一些操作,比如GC等,所以GC不是想什么时候做就立即触发的,是需要等待所有线程运行到安全点后才能触发。这些特定的安全点位置主要有以下几种:1. 方法返回之前2. 调用某个方法之后3. 抛出异常的位置4. 循环的末尾安全区域又是什么?Safe Point 是对正在执行的线程设定的。如果一个线程处于 Sleep 或中断状态,它就不能响应 JVM 的中断请求,再运行到 Safe原创 2021-03-10 18:12:40 · 725 阅读 · 0 评论 -
JVM杂谈
jvm启动时会在主机相应目录产生一个pid文件,jps就可以通过这个目录查看所有的java进程jmx(java管理扩展,MBean)可以看作一个特殊的对象,可以通过某种协议访问这个对象,比如rmi、http、snmprmi是java rpc的一种实现,远程方法调用jvm的远程监控原理是rmi,jstatd工具用于建立远程rmi服务器jvm本地监控的原理是利用进程间共享内存(文件共享),jconsole的MBean标签原理是通过本地协议与jmx通信jinfo用于实时查看和调整jvm的各项参数,调整的原创 2021-03-02 10:34:08 · 406 阅读 · 0 评论 -
jvm笔记
GC和GC Tuning作者:马士兵教育 http://mashibing.comGC的基础知识1.什么是垃圾C语言申请内存:malloc freeC++: new deletec/C++ 手动回收内存Java: new ?自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种类型的问题:忘记回收多次回收没有任何引用指向的一个对象或者多个对象(循环引用)2.如何定位垃圾引用计数(ReferenceCount)根可达算法(RootSearching)3.常原创 2020-10-09 11:55:02 · 323 阅读 · 1 评论 -
Class类文件的结构
Class文件是二进制文件,可以用javap -v翻译成字节码。Class文件的每个数据项占用1或多个字节,如果占用多个字节则高位在前。Class文件数据类型包括无符号数和表。无符号数属于基本的数据类型,可以用来描述数字、索引引用、数量值或者按照UTF-8编码构成的字符串值。表是由多个无符号数或者其他表作为数据项构成的符合数据类型,以"_info"结尾。Class文件的结构魔数与Class文件的版本常量池访问标志类索引、父类索引与接口索引集合字段表集合方法表集合属性表集合Code原创 2020-09-18 15:51:53 · 112 阅读 · 0 评论 -
从JVM谈Java基础
public class Test05 { //1 private static final Test05 t=new Test05(); //2 private final int age=5; public static Test05 getInstance(){ return t; } public static void main(String[] args) { Test05 t=Test05.getInstanc原创 2020-08-11 12:01:31 · 116 阅读 · 0 评论