JVM中GC小对象配置
小对象配置
-XX:+UseTLAB
表示,使用TLAB
TLAB
Thread Local Allocation Buffer
线程本地分配缓存
一个线程专用的内存分配区域,为了加速对象分配
每一个线程,都会产生一个TLAB,该线程独享的工作区域
每一个线程,都会默认使用TLAB区域
TLAB用来避免多线程冲突问题,提高对象分配效率
内存大小
TLAB空间一般不会太大
存放过程
如果,对象超过了eden区对象设置的大小
eden区放不下,会优先放到TLAB区
如果,TLAB区根据设置的对象大小
TLAB区也放不下,会直接分配在堆上
package com.bjsxt.base001;import java.util.HashMap;
import java.util.Map;public class Test06 {public static void main(String[] args) {//这种现象原因为:虚拟机对于体积不大的对象 会优先把数据分配到TLAB区域中,因此就失去了在老年代分配的机会//参数:-Xmx30M -Xms30M -XX:+UseSerialGC -XX:+PrintGCDetails -XX:PretenureSizeThreshold=1000 -XX:+UseTLABMap<Integer, byte[]> m = new HashMap<Integer, byte[]>();for(int i=0; i< 5*1024; i++){byte[] b = new byte[1024];m.put(i, b);}}
}
程序分析
每次需要1K,总共需要5M内存
测试
配置参数
-Xmx30M -Xms30M -XX:+UseSerialGC -XX:+PrintGCDetails -XX:PretenureSizeThreshold=1000 -XX:+UseTLAB
使用TLAB区域
每次需要1K,大于1000,直接放到堆内存
优先放到TLAB区域,因此,堆占用空间为0
这5M数据,都放在了TLAB区
运行
测试
配置信息
-Xmx30M -Xms30M -XX:+UseSerialGC -XX:+PrintGCDetails -XX:PretenureSizeThreshold=1000
不配置使用TLAB
默认是使用TLAB区域
因此,还会放在TLAB区域,堆内存使用为0
运行
测试
配置参数
-Xmx30M -Xms30M -XX:+UseSerialGC -XX:+PrintGCDetails -XX:PretenureSizeThreshold=1000 -XX:-UseTLAB
减号,不使用TLAB区域
需要1K,大于1000
由于,没有TLAB区域
这些对象会分配在堆上,为5M
运行
JVM中GC小对象配置相关推荐
- JVM中GC大对象配置
大对象配置 -XX:PretenureSizeThreshold 配置直接进入老年代的对象大小 如果,对象不是太大TLAN区,优先分配空间 大对象 新生代eden区,无法装入时,会直接进入老年代 可以 ...
- JVM中GC Root对象有哪些?
众所周知,我们目前最常用的虚拟机hotspot使用可达性分析来进行垃圾回收,而可达性分析需要依赖GC Root.下面我就来介绍下可以作为GC Root的对象. (一)虚拟机栈中引用的对象 虚拟机栈中的 ...
- JVM中GC对象配置
对象年龄配置 -XX:MaxTenuring Threshold 配置新生代对象的最大年龄 当超过这个年龄,对象就会进入老年代 默认值为15 回收过程 对象,首次创建都会被放置在新生代的eden区 如 ...
- JVM中GC原理解析
一.在理解GC之前,先了解下JVM体系结构 1.1什么是GC GC可以理解为在追踪仍然使用的所有对象,并将其余对象标记为垃圾然后进行回收,这样的一个过程称之为GC,所有的GC系统可以从如下几个方面进行 ...
- contentwindow无法搜索对象_面试官:讲一下Jvm中如何判断对象的生死?
但凡问到 JVM(Java 虚拟机)通常有 99% 的概率一定会问,在 JVM 中如何判断一个对象的生死状态? 判断对象的生死状态的算法有以下几个: 1.引用计数器算法 引用计算器判断对象是否存活的算 ...
- 面试官:讲一下Jvm中如何判断对象的生死?
但凡问到 JVM(Java 虚拟机)通常有 99% 的概率一定会问,在 JVM 中如何判断一个对象的生死状态? 判断对象的生死状态的算法有以下几个: 1.引用计数器算法 引用计算器判断对象是否存活的算 ...
- Jvm中如何判断对象的生死?
但凡问到 JVM(Java 虚拟机)通常有 99% 的概率一定会问,在 JVM 中如何判断一个对象的生死状态? 判断对象的生死状态的算法有以下几个: 1.引用计数器算法 引用计算器判断对象是否存活的算 ...
- JVM:GC之对象生死
1.简述 在Java内存运行时区域的各个部分中,程序计数器.虚拟机栈.本地方法栈3个区域随着线程而生,随着线程而亡.栈中的栈帧随着方法的进入和退出而有条不紊的进行着入栈和出栈操作. 每个栈帧需要分配多 ...
- jvm中GC日志格式详解(十)
一.日志相关参数 1.-XX:+PrintGCDetails 2.-XX:+PrintGCTimeStamps 打印时间戳 3.-XX:+PrintGCDateStamps 4.-Xloggc:/tm ...
最新文章
- C++中的类属(泛型)机制——模板
- R语言绘制环状条形图
- Nacos下载与安装-windows
- java学习笔记(4)
- 今天开始在博客园正式安家!
- SAP UI5 应用开发教程之十 - 什么是 SAP UI5 应用的描述符 Descriptor
- oracle mysql分页语句怎么写,sqlserver ,mysql,oracle 语句实现分页
- JavaScript中的this关键字
- 5.Scalal语法03 - 函数
- 带你了解APP开发的具体流程
- 2020 Linux系统应用基础教程 期末复习【整理】 第五章 磁盘文件与目录管理
- Fullcalendar 日历控件的基本使用
- 微信windows版_微信多开教程:Win、Mac、iOS、Android
- 【概率论与数理统计】p1-4 前言、随机试验、样本空间、事件间的关系、事件的运算及运算法则
- pDC 与 GetDC() 区别
- 88steamCSGO即开即取回的开箱网站,CSGO皮肤交易平台
- 华为P20 Pro对比iPhone X:谁更能拍出人像高级美?
- 软件绿化之实践一--绿化搜狗输入法
- 森浦资讯是一家怎么样的公司
- protoc 命令参数