JVM
fsdgfsf
这个作者很懒,什么都没留下…
展开
-
深入理解JVM-张龙-P103-P108垃圾回收
查看JDK源码的网址实验配置,从JDK9开始,默认的垃圾收集器才是G1,所以要设置G1与上面一一对应复习传统的OLD区域为什么不使用复制算法,因为它里面的对象是存活的时间比较长的,使用复制效率不高。另外新生代使用复制可以晋升至老年代,老年代也晋升不了其他的地方,所以不使用...原创 2020-02-17 11:47:49 · 249 阅读 · 0 评论 -
深入理解JVM-张龙-P98-P102垃圾回收
前面是解决引用发生变化的问题,这里是解决新对象分配的问题时间设置不是越短越好不管哪个模式一定包括全部的年轻代区域,而不是一部分回顾与总结G1ygc不需要global concurrent marking ,YGC是STW的 ,对全部新生代区域进行回收global concurrent marking是为mixed ...原创 2020-02-16 12:31:18 · 164 阅读 · 0 评论 -
深入理解JVM-张龙-P93-P97垃圾回收
官方文档Getting Started with the G1 Garbage Collector对象丢失或者对象漏标问题SATB可以解决这种漏标的问题原创 2020-02-15 12:20:02 · 137 阅读 · 0 评论 -
深入理解JVM-张龙-P88-P92垃圾回收
能满足高吞吐量和快响应能力在eden空间分配新对象,对新生代进行回收的时候,会把Eden空间和survivor空间存活的对象复制到另外一个survivor空间,然后eden空间和这个survivor空间继续配合着使用老年代并不会晋升到永久代,因为永久代存储的是元信息、常量等,只是名字有迷惑性而已,事实上在JDK8中已经将永久代的说法替换成了元空间G...原创 2020-02-14 12:12:24 · 321 阅读 · 0 评论 -
深入理解JVM-张龙-P81-P87垃圾回收
最短回收停顿时间指的是最短的STW的时间初始标记是指标记直接关联到的对象,不会继续往下走,所以速度很快重置线程指将CMS重置停顿指停顿用户线程谁来担保,老年代CMS只能在老年代使用,新生代的垃圾收集器会使用默认的...原创 2020-02-13 11:47:05 · 165 阅读 · 0 评论 -
深入理解JVM-张龙-P74-P80垃圾回收
方法结束后位于栈的引用变量被回收,没有引用指向这个对象,但是对象不能立即被回收,要等到下次GC来的时候才能回收对象循环引用的问题对象与对象之间互相引用,但是外部已经没有引用这个对象了先标记后清除所谓新生代一般指的是新创建的对象经过几轮GC之后,对象依然存活的话,会晋升至老年代先复制进行清除标记完以后,将对象进行移动根据各...原创 2020-02-12 12:30:53 · 248 阅读 · 0 评论 -
深入理解JVM-张龙-P60-P73
JVM的内存划分,jdk7和jdk8是有区别的先举个例子JVM所管理的内存空间可划分为:一个虚拟机栈归属于一个线程,是线程独有的内存空间。当线程消亡的时候,虚拟机栈也就消失了程序计数器也是线程私有的HotSpot虚拟机把本地方法栈和虚拟机栈合二为一了堆内存中的对象会被Java所有的线程所共享方法区存储的元信息包括常量、Class对象直接内存不是JVM直接管理的内存类加载完...原创 2020-02-11 13:04:15 · 241 阅读 · 0 评论 -
深入理解JVM-张龙-P49-P59
对于非静态的方法,总会有一个this参数test()方法有4个局部参数,分别是this,is,serverSocket,ex。catch语句只会执行一条所以只有一个ex下面来讲异常部分这里的一行代码对应五行字节码ExceptionTable上面表格的第一个异常处理,当在0~25行代码执行时出现异常的时候,跳到37行去执行处理异常语句,由于为catch{}为空,所以直接执行f...原创 2020-02-10 11:38:09 · 172 阅读 · 0 评论 -
深入理解JVM-张龙-P43-P48
上面的助记符与16进制是有对应关系的对于java中的非静态方法,至少会有一个局部变量,这个局部变量就是this,编译的时候传过来的jclasslib是很好的工具对静态变量进行初始化要加-p才能打印出私有方法的信息Synchronized修饰实例方法Synchronized修饰对象,给对象str进行上锁生成的字节码,红框后面的monitorexit是来处理异常情况的,...原创 2020-02-08 13:25:03 · 167 阅读 · 0 评论 -
深入理解JVM-张龙-P37-P42
字节码文件(class文件)是在JVM上运行的,JVM本身是依赖于平台的得益于JVM,Java才可以跨平台运行。有些语言像Scala它编译后可以生成符合JVM运行规范的字节码文件,因此可以很好的运行在JVM上对class文件进行反编译常量池相当于一个大资源库Ux表示占据x个字节方法表遵循的结构code表示下面是执行代码...原创 2020-02-06 12:50:58 · 385 阅读 · 0 评论 -
深入理解JVM-张龙-P32-P36-回顾类加载器的内容
编译完以后进行类加载实例变量要等到实例化对象的时候才会对它进行初始化不管一个类有多少个实例,都只会有一个Class对象。class对象像一个镜子可以反映出类的成员变量、方法等信息。解析:在类型的常量池中寻找类、接口、字段和方法的符号引用,把这些符号引用替换成直接引用的过程构造器是可以重载的,因此存在多个方法,还有个clinit方法首先对字节码文件进行加密,自定义类...原创 2020-02-05 11:00:23 · 207 阅读 · 0 评论 -
深入理解JVM-张龙-P26-P31
设置自己的系统类加载器的时候,parent是默认的系统类加载器。如果设置的那个参数为空的话,系统类加载器就是默认类加载器Class.forName的解读线程上下文类加载器适用于双亲委托模型不能很好的发生作用的场景线程上下文类加载器下面是线程上下文机制起作用的一些SPI默认的上下文类加载器是系统类加载器...原创 2020-02-04 11:46:34 · 200 阅读 · 0 评论 -
深入理解JVM-张龙-P21-P25
打印出类加载器所加载出的路径系统类加载器打印出的路径在IDEA中好长一段,有的是IdEA自己加上的。如果脱离IDE环境,在命令行中打印系统类加载器的路径,只会输出一个 . 也就是当前路径(class文件所在的文件夹路径)当我把MyTest1.class文件放入到根类加载器所访问的路径的时候,加载它的类加载器从系统类加载器变成了根类加载器扩展类加载器的应用,完成加密和解密的...原创 2020-02-03 12:52:45 · 376 阅读 · 0 评论 -
深入理解JVM张龙-P15-P20
数组类的Class对象不是由classloader创建的,是由Java虚拟机在动态运行期间创建的来自定义类加载器loadclass方法会调用我们重写的findclass方法。findclass方法一定要重写package com.kmoonwang.mywenda;import java.io.ByteArrayOutputStream;import java.io.Fi...原创 2020-02-02 23:09:52 · 294 阅读 · 0 评论 -
深入理解JVM学习(b站 张龙视频 P1-P14)
JVM上不只能运行java程序,scalar等其他语言也可以在jvm上运行,只要能生成jvm上可以理解的字节码文件就行。在cmd中输入jconsole可以出现控制台jvisualvm也是一种监控工具jmap命令行工具类加载在java代码中,类型的加载、连接与初始化过程都是在程序运行期间完成的什么是类型 ?定义的class\interface\枚举,并不是对象类型的加载就是将类型所在的...原创 2019-11-05 15:37:55 · 1003 阅读 · 2 评论