openjdk17 jvm 对象 内存溢出 在C++源码体现

##java大对象类

java 复制代码
public class MiBigObject {
    private String f1;
    private String f2;
    private String f3;
    private String f4;
    private String f5;
    private String f6;
    private String f7;
    private String f8;
    private String f9;
    private String f10;
    private String f11;
    private String f12;
    private String f13;
    private String f14;
    private String f15;
    private String f16;
    private String f17;
    private String f18;
    private String f19;
    private String f20;
    private Integer i21;
    private Integer i22;
    private Integer i23;
    private Integer i24;
    private Integer i25;
    private Integer i26;
    private Integer i27;
    private Integer i28;
    private Integer i29;
    private Integer i30;
    private Integer i31;
    private Integer i32;
    private Integer i33;
    private Integer i34;
    private Integer i35;
    private Integer i36;
    private Integer i37;
    private Integer i38;
    private Integer i39;
    private Integer i40;
    private Long l41;
    private Long l42;
    private Long l43;
    private Long l44;
    private Long l45;
    private Long l46;
    private Long l47;
    private Long l48;
    private Long l49;
    private Long l50;

    public String getF1() {
        return f1;
    }

    public void setF1(String f1) {
        this.f1 = f1;
    }

    public String getF2() {
        return f2;
    }

    public void setF2(String f2) {
        this.f2 = f2;
    }

    public String getF3() {
        return f3;
    }

    public void setF3(String f3) {
        this.f3 = f3;
    }

    public String getF4() {
        return f4;
    }

    public void setF4(String f4) {
        this.f4 = f4;
    }

    public String getF5() {
        return f5;
    }

    public void setF5(String f5) {
        this.f5 = f5;
    }

    public String getF6() {
        return f6;
    }

    public void setF6(String f6) {
        this.f6 = f6;
    }

    public String getF7() {
        return f7;
    }

    public void setF7(String f7) {
        this.f7 = f7;
    }

    public String getF8() {
        return f8;
    }

    public void setF8(String f8) {
        this.f8 = f8;
    }

    public String getF9() {
        return f9;
    }

    public void setF9(String f9) {
        this.f9 = f9;
    }

    public String getF10() {
        return f10;
    }

    public void setF10(String f10) {
        this.f10 = f10;
    }

    public String getF11() {
        return f11;
    }

    public void setF11(String f11) {
        this.f11 = f11;
    }

    public String getF12() {
        return f12;
    }

    public void setF12(String f12) {
        this.f12 = f12;
    }

    public String getF13() {
        return f13;
    }

    public void setF13(String f13) {
        this.f13 = f13;
    }

    public String getF14() {
        return f14;
    }

    public void setF14(String f14) {
        this.f14 = f14;
    }

    public String getF15() {
        return f15;
    }

    public void setF15(String f15) {
        this.f15 = f15;
    }

    public String getF16() {
        return f16;
    }

    public void setF16(String f16) {
        this.f16 = f16;
    }

    public String getF17() {
        return f17;
    }

    public void setF17(String f17) {
        this.f17 = f17;
    }

    public String getF18() {
        return f18;
    }

    public void setF18(String f18) {
        this.f18 = f18;
    }

    public String getF19() {
        return f19;
    }

    public void setF19(String f19) {
        this.f19 = f19;
    }

    public String getF20() {
        return f20;
    }

    public void setF20(String f20) {
        this.f20 = f20;
    }

    public Integer getI21() {
        return i21;
    }

    public void setI21(Integer i21) {
        this.i21 = i21;
    }

    public Integer getI22() {
        return i22;
    }

    public void setI22(Integer i22) {
        this.i22 = i22;
    }

    public Integer getI23() {
        return i23;
    }

    public void setI23(Integer i23) {
        this.i23 = i23;
    }

    public Integer getI24() {
        return i24;
    }

    public void setI24(Integer i24) {
        this.i24 = i24;
    }

    public Integer getI25() {
        return i25;
    }

    public void setI25(Integer i25) {
        this.i25 = i25;
    }

    public Integer getI26() {
        return i26;
    }

    public void setI26(Integer i26) {
        this.i26 = i26;
    }

    public Integer getI27() {
        return i27;
    }

    public void setI27(Integer i27) {
        this.i27 = i27;
    }

    public Integer getI28() {
        return i28;
    }

    public void setI28(Integer i28) {
        this.i28 = i28;
    }

    public Integer getI29() {
        return i29;
    }

    public void setI29(Integer i29) {
        this.i29 = i29;
    }

    public Integer getI30() {
        return i30;
    }

    public void setI30(Integer i30) {
        this.i30 = i30;
    }

    public Integer getI31() {
        return i31;
    }

    public void setI31(Integer i31) {
        this.i31 = i31;
    }

    public Integer getI32() {
        return i32;
    }

    public void setI32(Integer i32) {
        this.i32 = i32;
    }

    public Integer getI33() {
        return i33;
    }

    public void setI33(Integer i33) {
        this.i33 = i33;
    }

    public Integer getI34() {
        return i34;
    }

    public void setI34(Integer i34) {
        this.i34 = i34;
    }

    public Integer getI35() {
        return i35;
    }

    public void setI35(Integer i35) {
        this.i35 = i35;
    }

    public Integer getI36() {
        return i36;
    }

    public void setI36(Integer i36) {
        this.i36 = i36;
    }

    public Integer getI37() {
        return i37;
    }

    public void setI37(Integer i37) {
        this.i37 = i37;
    }

    public Integer getI38() {
        return i38;
    }

    public void setI38(Integer i38) {
        this.i38 = i38;
    }

    public Integer getI39() {
        return i39;
    }

    public void setI39(Integer i39) {
        this.i39 = i39;
    }

    public Integer getI40() {
        return i40;
    }

    public void setI40(Integer i40) {
        this.i40 = i40;
    }

    public Long getL41() {
        return l41;
    }

    public void setL41(Long l41) {
        this.l41 = l41;
    }

    public Long getL42() {
        return l42;
    }

    public void setL42(Long l42) {
        this.l42 = l42;
    }

    public Long getL43() {
        return l43;
    }

    public void setL43(Long l43) {
        this.l43 = l43;
    }

    public Long getL44() {
        return l44;
    }

    public void setL44(Long l44) {
        this.l44 = l44;
    }

    public Long getL45() {
        return l45;
    }

    public void setL45(Long l45) {
        this.l45 = l45;
    }

    public Long getL46() {
        return l46;
    }

    public void setL46(Long l46) {
        this.l46 = l46;
    }

    public Long getL47() {
        return l47;
    }

    public void setL47(Long l47) {
        this.l47 = l47;
    }

    public Long getL48() {
        return l48;
    }

    public void setL48(Long l48) {
        this.l48 = l48;
    }

    public Long getL49() {
        return l49;
    }

    public void setL49(Long l49) {
        this.l49 = l49;
    }

    public Long getL50() {
        return l50;
    }

    public void setL50(Long l50) {
        this.l50 = l50;
    }
}

##内存溢出测试代码

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class OutOfMemoryTest {

    public static void main(String[] args) {
        List<MiBigObject> miBigObjects = new ArrayList<>();
        while(true) {
            MiBigObject miBigObject = new MiBigObject();
            miBigObject.setF1("t1");
            miBigObject.setF2("t2");
            miBigObject.setF3("t3");
            miBigObject.setF4("t4");
            miBigObject.setF5("t5");
            miBigObject.setF6("t6");
            miBigObject.setF7("t7");
            miBigObject.setF8("t8");
            miBigObject.setF9("t9");
            miBigObject.setF10("t10");
            miBigObject.setF11("t11");
            miBigObject.setF12("t12");
            miBigObject.setF13("t13");
            miBigObject.setF14("t14");
            miBigObject.setF15("t15");
            miBigObject.setF16("t16");
            miBigObject.setF17("t17");
            miBigObject.setF18("t18");
            miBigObject.setF19("t19");
            miBigObject.setF20("t20");
            miBigObject.setI21(1);
            miBigObject.setI22(2);
            miBigObject.setI23(3);
            miBigObject.setI24(4);
            miBigObject.setI25(5);
            miBigObject.setI26(6);
            miBigObject.setI27(7);
            miBigObject.setI28(8);
            miBigObject.setI29(9);
            miBigObject.setI30(10);
            miBigObject.setI31(11);
            miBigObject.setI32(12);
            miBigObject.setI33(13);
            miBigObject.setI34(14);
            miBigObject.setI35(15);
            miBigObject.setI36(16);
            miBigObject.setI37(17);
            miBigObject.setI38(18);
            miBigObject.setI39(19);
            miBigObject.setI40(20);
            miBigObject.setL41(21L);
            miBigObject.setL42(22L);
            miBigObject.setL43(23L);
            miBigObject.setL44(24L);
            miBigObject.setL45(25L);
            miBigObject.setL46(26L);
            miBigObject.setL47(27L);
            miBigObject.setL48(28L);
            miBigObject.setL49(29L);
            miBigObject.setL50(30L);
            miBigObjects.add(miBigObject);
        }
    }

}

##gdb调试内存溢出堆栈

cpp 复制代码
#0  MemAllocator::Allocation::check_out_of_memory (this=0x7ffff7bfe660) at /home/yym/openjdk17/jdk17-master/src/hotspot/share/gc/shared/memAllocator.cpp:126
#1  0x00007ffff677afee in MemAllocator::Allocation::~Allocation (this=0x7ffff7bfe660, __in_chrg=<optimized out>)
    at /home/yym/openjdk17/jdk17-master/src/hotspot/share/gc/shared/memAllocator.cpp:84
#2  0x00007ffff677a0ab in MemAllocator::allocate (this=0x7ffff7bfe6d0) at /home/yym/openjdk17/jdk17-master/src/hotspot/share/gc/shared/memAllocator.cpp:373
#3  0x00007ffff6351067 in CollectedHeap::obj_allocate (this=0x7ffff00453d0, klass=0x1000c1000, size=27, __the_thread__=0x7ffff0028920)
    at /home/yym/openjdk17/jdk17-master/src/hotspot/share/gc/shared/collectedHeap.inline.hpp:36
#4  0x00007ffff6344c81 in InstanceKlass::allocate_instance (this=0x1000c1000, __the_thread__=0x7ffff0028920)
    at /home/yym/openjdk17/jdk17-master/src/hotspot/share/oops/instanceKlass.cpp:1375
#5  0x00007ffff69579f7 in OptoRuntime::new_instance_C (klass=0x1000c1000, current=0x7ffff0028920) at /home/yym/openjdk17/jdk17-master/src/hotspot/share/opto/runtime.cpp:219
#6  0x00007fffe1082145 in ?? ()
#7  0x00000000fdd65108 in ?? ()
#8  0x00007fffe8bdba68 in ?? ()
#9  0x00007fffd9c0e800 in ?? ()
#10 0x00007fffd9c16138 in ?? ()
#11 0x00000000fdd758d8 in ?? ()
#12 0x00007fffd9c0fc50 in ?? ()
#13 0x0000000000000000 in ?? ()

java 复制代码
#0  MemAllocator::Allocation::check_out_of_memory (this=0x7ffff7bfe180) at /home/yym/openjdk17/jdk17-master/src/hotspot/share/gc/shared/memAllocator.cpp:126
#1  0x00007ffff677afee in MemAllocator::Allocation::~Allocation (this=0x7ffff7bfe180, __in_chrg=<optimized out>)
    at /home/yym/openjdk17/jdk17-master/src/hotspot/share/gc/shared/memAllocator.cpp:84
#2  0x00007ffff677a0ab in MemAllocator::allocate (this=0x7ffff7bfe1f0) at /home/yym/openjdk17/jdk17-master/src/hotspot/share/gc/shared/memAllocator.cpp:373
#3  0x00007ffff6351067 in CollectedHeap::obj_allocate (this=0x7ffff00453d0, klass=0x1000c1000, size=27, __the_thread__=0x7ffff0028920)
    at /home/yym/openjdk17/jdk17-master/src/hotspot/share/gc/shared/collectedHeap.inline.hpp:36
#4  0x00007ffff6344c81 in InstanceKlass::allocate_instance (this=0x1000c1000, __the_thread__=0x7ffff0028920)
    at /home/yym/openjdk17/jdk17-master/src/hotspot/share/oops/instanceKlass.cpp:1375
#5  0x00007ffff5eda4f4 in Runtime1::new_instance (current=0x7ffff0028920, klass=0x1000c1000) at /home/yym/openjdk17/jdk17-master/src/hotspot/share/c1/c1_Runtime1.cpp:360
#6  0x00007fffe1085ba7 in ?? ()
#7  0x00007ffff7bfe300 in ?? ()
#8  0x0000000000000000 in ?? ()

##check_out_of_memory()方法源码 传送门

openjdk17 jvm byte数组 内存溢出 在C++源码体现-CSDN博客

相关推荐
waterme1onY24 分钟前
由于导包而引发的错误
java·开发语言·笔记·后端
Qhumaing26 分钟前
python学习——字典元素的访问和遍历
开发语言·python·学习
MatpyMaster34 分钟前
Python图像处理——Python转换h264格式视频
开发语言·python
Ruannn(努力版)34 分钟前
Android习题第五章数据存储
android·jvm
微扬嘴角42 分钟前
Java的LinkedList、HashSet与TreeSet
java·开发语言·windows
Zfox_1 小时前
【Linux】线程池设计 + 策略模式
linux·运维·c语言·c++·策略模式
AI原吾1 小时前
探索Python词云库WordCloud的奥秘
开发语言·python·信息可视化·wordcloud
速盾cdn1 小时前
速盾高防cdn支持移动端独立缓存
开发语言·安全·web安全
LG.YDX1 小时前
java:拆箱和装箱,缓存池概念简单介绍
java·开发语言