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