JVM
文章平均质量分 61
「已注销」
菜鸟一个,努力学习的过程中!共勉!
展开
-
JVM内存模型
1.运行时的内存管理这张图是我在我的书上拍下来的可以看出来内存区域分为线程公用的和线程私有的。1.方法区有时候有可以称为永久代,这部分主要存储的是类加载时的类的信息,常量静态变量以及编译的字节码等信息。常量池就在方法区里面,在类加载的时候有些常量就已经确定,还有的常量需要在运行的时候确定,这部分就称为运行时常量池,同样是作为常量池的一部分。这部分是可扩展的,可以通过启动自定义参...原创 2018-12-04 20:29:42 · 138 阅读 · 0 评论 -
JVM对象揭秘以及内存布局
下文我将从对象的创建和对象在内存中的布局两个方面介绍1.对象的创建java是一门面向对象的语言,java的世界里,无时无刻都有新的对象产生。在java语法层面上来看,新建一个对象就是java里面的new关键字。那么映射到JVM里面,对象是如何创建的呢。首先虚拟机会查看新创建的对象是否可以在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已经经过类的加载,解析,初始化的过程...原创 2018-12-04 23:38:36 · 294 阅读 · 0 评论 -
IDEA如何查看GC日志以及含义
1IDEA运行程序如何查看GC日志首先点击IDEA右上角这个位置然后点击第一个2.含义下面是我的IDEA测试的时候打印出来的GC日志[GC (Allocation Failure) [PSYoungGen: 33280K->5112K(38400K)] 33280K->30861K(125952K), 0.1152444 secs] [Times: user=0.25 s...原创 2018-12-05 17:44:13 · 4137 阅读 · 2 评论 -
垃圾回收器以及分类
1.垃圾回收器的各种组合:因为java虚拟机规范对垃圾回收器的实现没有具体的规范,所以不同的厂商实现了不同的回收器。下面一张图是各种不同的垃圾回收器以及可以实现的组合。有连线的代表两个垃圾回收器可以在年轻代和老年代互相组合。2.serial收集器从名字看出这是一个单线程收集器。他是JDK1.3之前新生代的回收器的唯一选择。它代表这是一个单线程的的垃圾回收器。在单线程的情况下,这个垃圾回收...原创 2018-12-14 11:13:03 · 767 阅读 · 0 评论 -
垃圾回收必要性以及判断对象是否可回收
#1.为什么需要垃圾回收之前的文章讲过java的内存模型。java最主要的两大区域就是堆和栈,而这两个区域大小不是无限大的,我们可以在启动的时候通过xmx xms xmn 这些参数来指定大小。当我们在程序里面不停地创建对象,运行方法,新开线程就会不断地要求JVM给我们分配对应的内存,如果我们一直不去收集那些没用的对象,就会把内存撑爆,导致程序崩溃。但是我们再写代码的时候并没有刻意的指明,我们的程...原创 2018-12-09 10:39:38 · 263 阅读 · 0 评论 -
垃圾回收算法
现在主要的垃圾回收算法主要有四种垃圾算法1.标记-清除算法这个垃圾回收算法就是回收的时候只对标记出来已经没有用的对象进行回首之后回收之后并不执行任何操作,这个垃圾回收算法大家可以看出来有一个很大的问题就是会产生大量的内存碎片。2.复制算法复制算法的核心就是实现把内存分为两块区域,每次分配内存空间的时候只是从其中的一块分配,另一块还是空闲的,垃圾回收之后把还处于存活状态的对象直接复制到另一块...原创 2018-12-09 11:37:01 · 177 阅读 · 0 评论 -
内存分配规则和生存状态
1.优先分配到eden区我们在方法里面显示的创建一个对象,它是会被优先分配到eden区。2.大对象直接进入到年老代-XX:PretenureSizeThreshold 这个参数可以设置超过多大内存空间的对象直接直接进入老年代,默认值为0。就是不论对象多大,都直接在eden区分配。3.长期存活的对象进入到老年代虚拟机给每个对象定义了一个年龄计数器,每次在survivor区迁移一...原创 2018-12-09 18:18:58 · 298 阅读 · 0 评论 -
JAVA里面四种引用以及如何使用软引用构建高速缓存
1. 四种缓存原创 2018-12-10 19:50:53 · 1409 阅读 · 0 评论