java虚拟机(五)--内存分配回收策略
来源:互联网 发布:山东省农产品出口数据 编辑:程序博客网 时间:2024/05/22 14:54
对象内存分配,大方向是分配在新生代的Eden区,如果启动了本地线程分配缓冲,就分配在TLAB上,少数时候直接分配在老年代中,分配规则与虚拟机选择的内存参数和垃圾收集器有关。
在jdk 1.8的环境下:
虚拟机参数:-Xms20M-Xmx20M-Xmn10M-XX:+PrintGCDetails-XX:SurvivorRatio=8
public static int _1mb=1024*1024; public static void main(String[] args) { byte[] a1,a2,a3,a4; a1=new byte[2*_1mb]; a2=new byte[2*_1mb]; a3=new byte[2*_1mb]; a4=new byte[4*_1mb]; }
GC日志信息
[GC (Allocation Failure) [PSYoungGen: 6428K->728K(9216K)] 6428K->4832K(19456K), 0.0073317 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] Heap PSYoungGen total 9216K, used 7193K [0x00000000ff600000, 0x0000000100000000, 0x0000000100000000) eden space 8192K, 78% used [0x00000000ff600000,0x00000000ffc50710,0x00000000ffe00000) from space 1024K, 71% used [0x00000000ffe00000,0x00000000ffeb6030,0x00000000fff00000) to space 1024K, 0% used [0x00000000fff00000,0x00000000fff00000,0x0000000100000000) ParOldGen total 10240K, used 4104K [0x00000000fec00000, 0x00000000ff600000, 0x00000000ff600000) object space 10240K, 40% used [0x00000000fec00000,0x00000000ff002020,0x00000000ff600000) Metaspace used 3487K, capacity 4496K, committed 4864K, reserved 1056768K class space used 386K, capacity 388K, committed 512K, reserved 1048576K
给a3分配内存时,eden space(有2.4M的空间不知道是什么占用的,此时占用了2.4+2+2=6.4,剩余1.6)空间不足,所以触发GC。把对象a1,a2(幸存代放不下)移到老年代,然后剩余的一些对象(不清楚是什么)迁移到新生代中的幸存代。a3放到新生到EDEN区,a4也是
最终新生代用了(6+2.4)M,老年代用了4M。
阅读全文
0 0
- java虚拟机(五)--内存分配回收策略
- java虚拟机-内存分配与回收策略
- Java虚拟机(三):内存分配与回收策略
- Java内存区域分配、存储、垃圾回收策略与回收机制(深入JVM虚拟机)
- 深入理解Java虚拟机笔记---内存分配与回收策略
- 深入理解java虚拟机-3 内存分配与回收策略
- 深入理解Java虚拟机笔记---内存分配与回收策略
- 深入Java虚拟机学习笔记 - 内存分配和回收策略
- 深入理解java虚拟机-内存分配与回收策略
- JVM虚拟机-内存分配与回收策略
- 虚拟机3.6 内存分配与回收策略
- 《深入理解Java虚拟机》学习笔记(3)--内存分配与回收策略
- Java虚拟机内存分配策略
- Java虚拟机内存分配策略
- 垃圾收集与分配策略——(五)内存分配与回收策略
- 深入理解java虚拟机(六):java垃圾收集分析实战(内存分配与回收策略)
- 深入理解java虚拟机(六):java垃圾收集分析实战(内存分配与回收策略)
- java jvm 内存分配和回收策略
- 【学习C++】C++常对象精讲 — const关键字
- 集成阿里云推送
- Kotlin 项目实记
- 选中一行数据做删除
- 我是标题
- java虚拟机(五)--内存分配回收策略
- Tomcat 集群配置2
- curl 命令简介
- js--打卡--12.05 arguments
- Android工具之判断文件的编码
- 沉浸式状态栏
- Android学习笔记之线程与消息处理
- Oracle 状告 Google 侵犯专利
- RabbitMQ学习(二)