JVM
扎个冲天揪
冲冲冲冲冲冲鸭
展开
-
JVM_内存分配和回收策略
1.内存分配 1.对象优先在eden分配 对象先在新生代Eden区分配,当Eden区没有足够空间进行分配,虚拟机将发起 Minor GC 2.大对象直接进入老年代 大对象指的是需要大量的连续内存空间的java对象。如很长的字符串或者数组 -XX:PretenureSizeThreshold:大于该值直接在老年代分配 3.长期存活的对象直接进入老年代 设置对象...原创 2019-07-07 14:28:51 · 122 阅读 · 0 评论 -
JVM_对象已死
垃圾收集器再对堆进行回收前,第一个要做的事就是确定对象是否还存活,判断方法有2种 1)引用计数法 2)可达性分析 1.引用计数法 给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1;当引用失效时,计数器值-1。任何时刻计数值为0的对象就是不可能再被使用的。 缺点: 很难解决对象之间的相互循环引用问题,导致它们的引用计数都不为0,于是引用计数算法无法通知GC收集器收集它们。 ...原创 2019-07-07 14:29:44 · 132 阅读 · 0 评论 -
JVM_回收算法
JVM回收算法 垃圾回收算法有4种 标记-清除算法 复制算法 标记-整理算法 分代收集算法 1.复制算法 可用的内存空间分为大小相等的两块,每次只是用其中的一块,当这一块被用完的时候,就将还存活的对象复制到另一块中,然后把原已使用过的那一块内存空间一次回收掉。这个算法常用于新生代的垃圾回收。 优点 复制算法解决了标记-清除算法的效率问题,以空间换时间。 缺点 但是当存...原创 2019-07-07 14:32:09 · 89 阅读 · 0 评论 -
JVM_垃圾回收器
JVM_垃圾收集器 垃圾收集器一共有7种,如果说收集算法是内存回收的方法,那个垃圾收集器就是垃圾回收的具体实现。 以中间绿线为界,上边三个用于年轻代,下边三个用在年老代,而G1则老少通吃,**黑线**线表示两个回收器可搭配使用,**红线**则表示两者可以在同一区域交替使用。由于G1在JDK1.7才达到商用级别,而且目前线上环境也很少使用。 名称 区域 算法 适用情况 Seria...原创 2019-07-07 14:34:20 · 127 阅读 · 0 评论 -
jvm_线程TLAB局部缓存区域
JVM_线程TLAB局部缓存区域 1.对象内存分配的两种方法 Ø 指针碰撞 假设Java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间那边挪动一段与对象大小相等的距离,这种分配方式称为“指针碰撞” Ø 空闲列表 如果Java堆中的内存并不是规整的,已使用的内存和空闲的内存相互交错,那就没...原创 2019-07-07 14:36:48 · 544 阅读 · 0 评论 -
JVM_内存泄漏和内存溢出
内存泄漏 概念: 一个不再被程序使用的对象或者变量还在内存中占有存储空间。 (1)堆中申请的空间没有被释放 (2)对象不在使用但还在内存中保留 内存泄漏的原因: (1)静态集合类,如hashmap和vector,如果容器为静态,她们的生命周期与程序一致。 (2)各种连接,如数据库连接,IO连接 (3)监听器:通常一个应用中会用到多个监听器,但是在释放对象的同时往往没有相应的删除监听器 (4...原创 2019-07-07 14:39:00 · 634 阅读 · 0 评论 -
JSR303参数校验
JSR303参数校验 开发web项目有时候我们需要对controller层传过来的参数进行一些基本的校验,比如非空,非null,整数值的范围,字符串的个数,日期,邮箱等等。最常见的就是我们直接写代码校验,这样以后比较繁琐,而且不够灵活。故引出使用JSR303来做参数校验。参数校验的实现: 手机号和密码字段自定义注解 为了让客户端显示更加友好 需要自定义异常拦截器 1. 添加依...原创 2019-07-07 15:33:21 · 244 阅读 · 0 评论