-Xms18m -Xmx18m -Xmn16m -XX:+UseSerialGC -XX:-UseAdaptiveSizePolicy -XX:SurvivorRatio=6 -verbose:gc -XX:+PrintGC -XX:+PrintGCDetails
使用上面的JVM参数运行下面的代码时,GC日志中旧生代总容量变成4096K(4M),与设置的2M(18-16)不一样
[Tenured: 3072K->3072K(4096K), 0.0143395 secs]
注意这里,括号里面4096K表示旧生代所有空间为4M,而不是设置的2M.
如果设置 -Xms24m -Xmx24m,则由正常了(输出[Tenured: 6144K->6144K(8192K), 0.0129542 secs]).
这个到底嘛原因呢?
输出如下:
Minor GC should happen
[GC [DefNew (promotion failed): 11509K->11659K(14336K), 0.0123390 secs][Tenured: 3072K->3072K(4096K), 0.0143395 secs] 11509K->11413K(18432K), [Perm : 2075K->2075K(12288K)], 0.0333981 secs] [Times: user=0.01 sys=0.00, real=0.03 secs]
[Full GC [Tenured: 3072K->3072K(4096K), 0.0097443 secs] 13461K->13461K(18432K), [Perm : 2081K->2081K(12288K)], 0.0097931 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
[Full GC [Tenured: 3072K->3072K(4096K), 0.0177553 secs] 13461K->13448K(18432K), [Perm : 2081K->2075K(12288K)], 0.0178095 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]
java.lang.OutOfMemoryError: Java heap space
Dumping heap to D:/D/myeclipse_dump.bin ...
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at jvm.MultiMajorGCLog$MemoryObject.<init>(MultiMajorGCLog.java:48)
at jvm.MultiMajorGCLog.testMain(MultiMajorGCLog.java:34)
at jvm.MultiMajorGCLog.main(MultiMajorGCLog.java:39)
Unable to create D:/D/myeclipse_dump.bin: File exists
Heap
def new generation total 14336K, used 10748K [0x02a00000, 0x03a00000, 0x03a00000)
eden space 12288K, 87% used [0x02a00000, 0x0347f088, 0x03600000)
from space 2048K, 0% used [0x03800000, 0x03800000, 0x03a00000)
to space 2048K, 0% used [0x03600000, 0x03600000, 0x03800000)
tenured generation total 4096K, used 3072K [0x03a00000, 0x03e00000, 0x03e00000)
the space 4096K, 75% used [0x03a00000, 0x03d00010, 0x03d00200, 0x03e00000)
compacting perm gen total 12288K, used 2082K [0x03e00000, 0x04a00000, 0x07e00000)
the space 12288K, 16% used [0x03e00000, 0x04008840, 0x04008a00, 0x04a00000)
No shared spaces configured.
package jvm; public class MultiMajorGCLog { public static void testMain() { try { Thread.sleep(40); } catch (Exception e) { e.printStackTrace(); } MemoryObject object1 = new MemoryObject(1024 * 1024 * 3); MemoryObject object2 = new MemoryObject(1024 * 1024 * 3); MemoryObject object3 = new MemoryObject(1024 * 1024 * 3); MemoryObject object4 = new MemoryObject(1024 * 1024 * 2); System.out.println("Minor GC should happen"); MemoryObject object5 = new MemoryObject(1024 * 1024 * 2); MemoryObject object6 = new MemoryObject(1024 * 1024 * 2); } public static void main(String[] args) { testMain(); } private static class MemoryObject { private byte[] bytes; public MemoryObject(int objectSize) { this.bytes = new byte[objectSize]; } } }
相关推荐
- 当旧生代空间满时,触发大收集,由于涉及到所有存活对象,因此大收集速度较慢。 **2.4 永久代(Permanent Generation)** - **存储内容**: - 负责保存反射对象,例如描述类与方法的对象。 #### 三、性能调优 ...
在进行GC9306 LCD驱动芯片的应用开发时,开发者需要仔细阅读数据表中的各项参数设置,以确保能够正确地配置芯片的各种功能,实现预期的显示效果。无论是在智能手机、平板电脑还是其他移动设备中,了解如何通过MCU...
配置W3M时,用户可能需要调整与GC-7.2相关的参数,例如设置最大堆大小、启用并发垃圾回收等,这些可以通过修改W3M的配置文件或者在运行时传递参数实现。合理的配置可以进一步优化W3M的性能,使其在处理复杂网页时...
对gc日志进行统计分析,使用命令:java -jar gcviewer-1.3x.jar gc.log summary.csv [chart.png] [-t PLAIN|CSV|CSV_TS|SIMPLE|SUMMARY]
lcd_gc9503CV_mipi_YX.dtsi
标题中的"SENSOR_GC1054.rar_1054-sensor_SENSOR_GC1054_gc1054"暗示了我们正在处理一种名为GC1054的传感器,这可能是一款专用于图像处理的传感器。在IT行业中,这类传感器通常被应用于摄像头设备、机器视觉系统或...
用户首先需要下载“VisualGC.zip”压缩包,其中包含的“com-sun-tools-visualvm-modules-visualgc.nbm”是VisualGC的插件安装文件。解压后,打开jvisualvm工具,依次选择“工具” -> “插件” -> “已下载”,然后...
1. **内存溢出**:如果年轻代的空间不足以容纳新分配的对象,或者Survivor区无法容纳从Eden区晋升的对象,就会触发Full GC。如果此时老年代也满了,就会出现`OutOfMemoryError`,导致JVM崩溃。 2. **性能问题**:...
**GC2093 CSP Datasheet Beta0.3 .pdf** 文件主要介绍了一款由格科微(Galaxycore)公司推出的高动态范围(HDR)1080P CMOS图像传感器——GC2093。这款传感器设计用于安全摄像头、数码相机以及手机摄像头应用。以下...
在某些区域,GC含量过高或过低可能导致测序效率下降,产生读取偏斜,使得数据分析时出现系统误差。 描述中提到的“配合本人博客使用和学习,https://blog.csdn.net/abcba101/article/details/102810927”,意味着这...
gcViewer工具 gcviewer-1.37-SNAPSHOT.jar
- **To Space空间不足**:如果Minor GC时To Space空间不足以容纳存活对象,这些对象将直接晋升到旧生代。 - **大对象直接分配到旧生代**:可以通过`-XX:PretenureSizeThreshold`设置特定大小的对象直接分配到旧生代...
1. **堆内存监控**:显示堆内存的总大小、已用空间、空闲空间等信息,帮助开发者了解当前JVM内存压力,判断是否存在内存溢出的风险。 2. **年轻代与老年代分析**:展示新生代和老年代的内存使用情况,便于理解垃圾...
总结,GC5035 MIPI RAW驱动在MTK平台Android 10.0上的实现,涉及了硬件接口、操作系统内核、用户空间API等多个层面的知识。理解并掌握这些技术细节,对于开发高效、稳定的移动设备摄像头应用至关重要。通过不断优化...
《GC5025.tar.gz:RK3368平台上的GC5025摄像头驱动详解》 在嵌入式系统开发中,摄像头驱动扮演着至关重要的角色,它连接硬件设备与软件应用,使得图像捕获和处理成为可能。本文将深入探讨针对RK3368平台的GC5025...
摄像头GC2145是一种常见的数字摄像头芯片,广泛应用于各种监控设备、网络摄像头以及电脑摄像头等产品中。本文将深入探讨GC2145的核心知识点,包括寄存器初始化配置和数据手册,以及如何利用C语言进行编程。 一、GC...
GC2053 is a high quality 1080P CMOS image sensor, for security camera products, digital camera products and mobile phone camera applications. GC2053 incorporates a 1920H x 1080V pixel array, on-chip ...
首先,VisualGC能够展示堆内存的实时状态,包括新生代、老年代和持久代的大小、使用情况以及剩余空间。这对于识别内存泄漏或者理解对象生命周期是非常有用的。通过观察GC活动,我们可以发现可能的性能瓶颈,例如频繁...
《SC6533_GC6153_Driver_V0.3000.100:格科微GC6153串口驱动详解》 在电子设备开发领域,驱动程序扮演着至关重要的角色,它是硬件设备与操作系统之间的桥梁,使得操作系统能够有效地控制和管理硬件。本文将深入探讨...