jvm
文章平均质量分 59
花和尚也有春天
会收集一些不错的文章,时常品读,也学着自己总结一些东西,坚持努力的方向!
展开
-
如何保证接口的幂等性?常见的实现方案有哪些?
。。转载 2022-06-13 23:22:30 · 3454 阅读 · 0 评论 -
java:jvm:JVM堆区新生代为什么有两个Survivor
JVM内存模型中, Heap区被分为新生代和老年代两个区域, 新生代又分为Eden+Survivor1+Survivor2. 新生代收集算法主要使用复制算法, 老年代收集算法主要使用标记-清理或标记-整理算法。堆内存划分新生代在发生首次YGC的时候, Eden内存活的对象会被复制到S1。再发生YGC的时候, Eden内存活的对象和S1内存活的对象会被复制到S2, 同时清除Eden内的对象和S1内的对象.再发生YGC的时候, Eden内存活的对象和S2内存活的对象会被复制到S.原创 2020-09-26 17:25:34 · 1125 阅读 · 0 评论 -
jvm:查看jvm各块儿空间的使用详细情况,如堆,方法区
[root@xg ~]# jmap -heap 15653Attaching to process ID 15653, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.181-b13using thread-local object allocation.Parallel GC with 18 thread(s)Heap Configuration: Mi.原创 2020-06-04 18:28:05 · 1359 阅读 · 0 评论 -
java:jvm:jvisualvm安装visualgc插件
visual gc 是 visualvm 中的图形化查看 gc 状况的插件。这个插件jvisualvm.exe不自带 ,需要我们自己安装。1打开自己java目录进入bin,点击运行jvisualvm.exe(打开cmd输入:jvisualvm打开jvisualvm.exe)2 进入jvisualvm点击 -》工具 -》插件 -》3进入 想着可用插件 找到visualgc...转载 2019-12-29 17:42:59 · 1748 阅读 · 0 评论 -
jvm:新生代、老年代、MinorGC、MajorGC(full gc)
JVM中的堆,一般分为三大部分:新生代、老年代、永久代: 一:新生代:主要是用来存放新生的对象。一般占据堆的1/3空间。由于频繁创建对象,所以新生代会频繁触发MinorGC进行垃圾回收。 新生代又分为 Eden区、ServivorFrom、ServivorTo三个区。 Eden区:Java新对象的出生地(如果新创建的对象占用内存很大,则...转载 2018-10-23 20:37:38 · 765 阅读 · 0 评论 -
jvm:几块内存区域划分的比例
1.堆分为新生代和老年代,默认情况下新生代占堆的1/3,老年代占堆的2/3。2.新生代中: 3.转载 2018-10-23 20:38:24 · 3630 阅读 · 0 评论 -
jvm:分代回收机制
分代收集算法是目前大部分JVM的垃圾收集器采用的算法。它的核心思想是根据对象存活的生命周期将内存划分为若干个不同的区域。一般情况下将堆区划分为老年代(Tenured Generation)和新生代(Young Generation),老年代的特点是每次垃圾收集时只有少量对象需要被回收,而新生代的特点是每次垃圾回收时都有大量的对象需要被回收,那么就可以根据不同代的特点采取最适合的收集算法。目前...转载 2018-10-23 22:50:24 · 1637 阅读 · 0 评论 -
jvm:超详细java中的ClassLoader详解 & perfect
ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。但是,jvm启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载。想想也是的,一次性加载那么多j...转载 2018-10-24 20:10:39 · 172 阅读 · 0 评论 -
jvm:即时编译(JIT)
什么是JIT1、动态编译(dynamic compilation)指的是“在运行时进行编译”;与之相对的是事前编译(ahead-of-time compilation,简称AOT),也叫静态编译(static compilation)。2、JIT编译(just-in-time compilation)狭义来说是当某段代码即将第一次被执行时进行编译,因而叫“即时编译”。JIT编译是动态编译的...转载 2018-10-24 20:14:31 · 321 阅读 · 0 评论 -
jvm:触发JVM进行Full GC的情况及应对策略
堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示:从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,对老年代GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor GC,但非绝...转载 2018-10-30 09:11:31 · 356 阅读 · 0 评论 -
jvm:jvisualvm.exe 远程
电脑本地为jdk1.8虚拟机ip为192.168.1.28,上面安装jdk为1.7第一步: 启动jstatd服务(RMI服务)(在需要监控的远程服务端启动jstatd) 其实有个jstatd位于jdk的bin目录下 先将如下内容写到jstatd.all.policy文件中,不需改动直接复制,并且把该文件放在jdk的bin目录中grant codebase "file:...原创 2018-10-30 15:03:52 · 1640 阅读 · 0 评论 -
jvm:参数控制
JVM的堆的内存, 是通过下面面两个参数控制的 -Xms 最小堆的大小, 也就是当你的虚拟机启动后, 就会分配这么大的堆内存给你 -Xmx 是最大堆的大小 当最小堆占满后,会尝试进行GC,如果GC之后还不能得到足够的内存(GC未必会收集到所有当前可用内存),分配新的对象,那么就会扩展堆,如果-Xmx设置的太小,扩展堆就会失败,导致OutOfMemoryError错误提示。实际上,细节不止于...转载 2018-10-30 16:18:18 · 206 阅读 · 0 评论 -
jvm:垃圾回收之Minor GC和Major GC(full gc)
jvm采用分代内存回收,而jvm参与内存回收的区域主要包含堆(主要存放对象)和持久代(主要存放class信息和被final修饰的常量);而堆内存又被分为年轻代和年老代,年轻代又被分为eden区和survivor区,默认比率为8:1.针对年轻代垃圾回收的机制被称为minor gc,针对年老代和持久代垃圾回收的机制被称为full gc。1.问:minor gc什么时候被触发?触发minor ...转载 2018-10-23 20:35:07 · 1160 阅读 · 1 评论 -
jvm: jvisualvm简要说明
jvisualvm能干什么:监控内存泄露,跟踪垃圾回收,执行时内存、cpu分析,线程分析...jvisualvm已经被集成在jdk1.6以上的版本中(不是jre)。自身运行需要最低jdk1.6版本,但是可以监控运行在jdk1.4以上版本的java程序。以jdk1.6update45(jdk1.6update45自带的jvisualvm)来做说明,当然也可单独下载独立的jvisualvm,正...转载 2018-10-23 20:23:33 · 4822 阅读 · 2 评论 -
面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”
面试题目: 地球人都知道,Java有个东西叫垃圾收集器,它让创建的对象不需要像c/cpp那样delete、free掉,你能不能谈谈,GC是在什么时候,对什么东西,做了什么事情?目录一.回答:什么时候?1.系统空闲的时候。2.系统自身决定,不可预测的时间/调用System.gc()的时候。3.能说出新生代、老年代结构,能提出minor gc/full gc4.能说明mino...转载 2018-10-23 00:04:14 · 136 阅读 · 0 评论 -
JVM:调优总结
http://pengjiaheng.iteye.com/blog/548472http://pengjiaheng.iteye.com/blog/552456http://pengjiaheng.iteye.com/blog/558619转载 2018-09-22 01:09:44 · 169 阅读 · 0 评论 -
JVM:是什么?作用?工作机制?
1、jvm定义JVM就是java虚拟机,它是一个虚构出来的计算机,可在实际的计算机上模拟各种计算机的功能。jvm有自己完善的硬件结构,例如处理器、堆栈和寄存器等,还具有相应的指令系统。2、jvm作用JVM是java字节码执行的引擎,还能优化java字节码,使之转化成效率更高的机器指令。jvm中类的装载是由类加载器和它的子类来实现的,类加载是java运行时一个重要的系统组件,负责在运行时...转载 2018-10-03 10:06:16 · 146 阅读 · 0 评论 -
JVM:内存模型详解 & 图 perfect
JVM =类加载器(classloader)+ 执行引擎(execution engine)+ 运行时数据区域(runtime data area) Java编写的代码会按照下图的流程来执行: 图 : Java代码执行流程类装载器装载负责装载编译后的字节码,并加载到运行时数据区(Runtime Data Area),然后执行引擎执行会执行这些字节码。参考:...转载 2018-10-03 09:50:47 · 163 阅读 · 0 评论 -
JVM :内存初学 (堆(heap)、栈(stack)和方法区(method) ) & perfect
先了解具体的概念:JAVA的JVM的内存可分为3个区:栈(stack)堆(heap)方法区(method) 栈区(非线程共享):1.每个线程包含一个栈区(又分为java虚拟机栈和本地方法栈):栈中只保存基本数据类型的对象和自定义对象的引用(不是对象)。2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。3.栈分为3个部分:(1)基本类型变量区(2)执行...转载 2018-09-16 19:12:20 · 184 阅读 · 0 评论 -
jvm:TLAB
TLABJVM在内存新生代Eden Space中开辟了一小块线程私有的区域,称作TLAB(Thread-local allocation buffer)。默认设定为占用Eden Space的1%。在Java程序中很多对象都是小对象且用过即丢,它们不存在线程共享也适合被快速GC,所以对于小对象通常JVM会优先分配在TLAB上,并且TLAB上的分配由于是线程私有所以没有锁开销。因此在实践中分配多个...转载 2018-10-06 09:45:23 · 423 阅读 · 0 评论 -
jvm:垃圾回收总结
1. JVM垃圾回收机制与实现堆:所有的对象实例与数组,GC堆,分为新生代与老年代 栈:栈帧包含局部变量表(基本数据类型 8种、对象引用类型)、操作数栈、动态链接、方法出口 方法区:类信息、常量、静态变量、即时编译器编译后的代码等数据,也成为永久代一般说栈指的是 虚拟机栈,或者说是虚拟机栈中的局部变量表TLAB:本地线程分配缓冲,线程分配内存,现用TLAB分配,用完重新分配新的TLA...转载 2018-10-07 00:24:17 · 100 阅读 · 0 评论 -
jvm :垃圾回收是什么时候触发? 垃圾回收算法? 有哪些垃圾回收器?
1.1.那究竟GC为我们做了什么操作呢?首先要弄清楚以下几个问题: 1 ,哪些内存需要回收? 2 ,什么时候回收? 3 ,如何回收? 这时候有人就会疑惑了,既然GC 已经为我们解决了这个矛盾,我们还需要学习GC 么?当然当然是肯定的,那究竟什么时候我们还需要用到的呢? 1 ,排查内存溢出 2 ,排查内存...转载 2018-10-09 20:11:53 · 4680 阅读 · 0 评论 -
jvm:堆外内存(直接内存)
堆内存根据生命周期进行分而治之,分区之后可以提高JVM垃圾收集的效率,更好地回收为了更好地分配。如果在堆中无法分配内存,并且堆也无法再扩展时,将会抛出OutOfMemoryError异常。HeapByteBuffer与DirectByteBuffer,在原理上,前者可以看出分配的buffer是在heap区域的,其实真正flush到远程的时候会先拷贝得到直接内存,再做下一步操作(考虑细节还会到...转载 2018-10-10 09:12:08 · 2560 阅读 · 0 评论 -
jvm:Minor GC与Full GC分别在什么时候发生?
首先区分一下Minor GC和Full GC:Minor GC是新生代GC,指的是发生在新生代的垃圾收集动作。由于java对象大都是朝生夕死的,所以Minor GC非常频繁,一般回收速度也比较快。Major GC/Full GC 是老年代GC,指的是发生在老年代的GC,出现Major GC一般经常会伴有Minor GC,Major GC的速度比Minor GC慢的多。 触发Min...转载 2018-10-22 23:15:37 · 8734 阅读 · 2 评论 -
jvm:新生代,老年代,永久代,元空间
在这里明确一下JAVA“代”概念。前面我们已经知道了,线程私有的区域——虚拟机栈、本地方法栈和程序计数器会随着线程结束而消亡,垃圾收集则主要关注方法区和堆两个共享区域。看一下下面这张图,方法区即被称为永久代,而堆中存放的是对象实例,为了回收的时候对不同的对象采用不同的方法,又将堆分为新生代和老年代,默认情况下新生代占堆的1/3,老年代占堆的2/3。 1. 新生代(Young Gen...转载 2018-10-22 23:54:50 · 3879 阅读 · 1 评论 -
JVM:运行时内存分析
Jvmjvm其实就是java的虚拟机,它将编译好的字节码文件翻译成机器能识别的机器语言,然后执行。主要包括类加载,执行(运行字节码指令),垃圾回收三个功能模块。下图描述了各个功能模块作用的内存区域。直接内存其中:直接内存(Direct Memory)并不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域。但是这部分内存也被频繁地使用,而且也可能导致OutOfMemo...转载 2018-10-02 01:34:32 · 524 阅读 · 0 评论