JVM&GC(二)对象提升规则

基于深度学习卷积神经网络的垃圾分类识别系统Python实战 图像分类是计算机视觉中最基础也最具应用价值的技术方向之一,而深度学习中的卷积神经网络(CNN)凭借端到端特征学习能力,在垃圾识别等场景中展现出远超传统人工特征方法的优势。通过卷积层自动提取边缘、纹理与形状特征,结合数据增强与迁移学习,即使中等规模数据集也能训练出高精度分类模型。这类技术不仅降低了环保领域的人工分拣成本,还可延伸至智能摄像头、社区回收站等实际场景。围绕垃圾分类图像识别任务,从数据预处理、CNN模型设计、训练调优到推理部署,一套包含源码、数据集与预训练模型的完整Python工程,能帮助开发者快速 阅读详情

前言

虚拟机给每个对象定义了一个对象年龄(Age)计数器。如果对象在Eden区出生并经过第一次Minor GC后仍然存活,并且能被Survivor容纳的话,将被移动到Survivor空间中,并将对象年龄设为1.对象在Survivor中每熬过一次Minor GC,年龄就将增加1岁,当他的年龄增加到一定程度(默认为15岁)时,就会被晋升到老年代中。

分配原则

  • 对象优先分配在Eden区,如果Eden区,如果Eden区没有足够的空间,虚拟机执行一次Minor GC。
  • 大对象直接进入老年代,这样做的目的是为了避免在Eden区和两个Survivor区之间发生大量的内存拷贝。
  • 长期存活的对象进入老年代。虚拟机给每个对象定义了一个对象年龄(Age)计数器。如果对象在Eden区出生并经过第一次Minor GC后仍然存活,并且能被Survivor容纳的话,将被移动到Survivor空间中,并将对象年龄设为1.对象在Survivor中每熬过一次Minor GC,年龄就将增加1岁,当他的年龄增加到一定程度(默认为15岁)时,就会被晋升到老年代中。
  • 动态判断对象的年龄。如果Survivor区中相同年龄的所有对象大小总和大于Survivor空间的一半,年龄大于或等于该年龄的对象可直接进入老年代。
  • 空间分配担保。每次进行Minor GC时,JVM会计算Survivor区移至老年去的对象的平均大小,如果这个值大于老年去的剩余值大小则进行一次Full GC,如果小于则进入检查HandlePromotionFailure逻辑。判断这个逻辑,如果是True则只进行Minor GC,如果是False则进行Full GC。
    图片.png
    个人博客
    腾讯云社区
    掘金
    优快云
    简书
    GitHub
    码云
    OSCHINA
    Segmentfault
    公众号:wx.jpg
天池长期赛:二手车价格预测(422方案分享) 本次比赛是一次很好的锻炼数据挖掘能力的入门赛,从EDA-数据清洗-特征工程-模型调参-模型融合,能够完整的学习到大数据的分析和挖掘,值得历练。 阅读详情

相关推荐

关于mos管的压降问题(项目遇到问题总结)

在研发过程中没有出现问题的板子,到了小批时竟出现雷达一直在触发???找了大几天,没有头绪。心中疑惑颇多,加上老板催促,自考等原因,真是压力山大。4月份自考,只有差不多一个月时间了吧,没有什么大的收获,反而在查找硬件问题的过程中,发现了一个自己忽视的一个问题,就是关于Mos管的压降问题。 备考的过程崎岖不平,工作又问题多多,孰轻孰重,如何取舍?从心理来说,不想取舍什么,只是有所得就可以,过不了就过不了呗,已经毕业十五年了,没这个本科文凭不也过来了吗?只是代表了自己在这一段时间的思考,自己兴趣吧,没什么大不了

guangod的博客 2万+

JVM的GC机制

JVM的GC概述 GC即垃圾回收,是指jvm用于释放那些不再使用的对象所占用的内存。 在充分理解了垃圾收集算法和执行过程后,才能有效的优化它的性能。 有些垃圾收集专用于特殊的应用程序。比如,实时应用程序主要是为了避免垃圾收集中断,而大多数OLTP应用程序则注重整体效率。 垃圾收集的目的在于清除不再使用的对象。gc通过确定对象是否被活动对象引用来确定是否收集该对象。两种常用的方法是引用计数和对象引用遍历。 引用计数 引用计数存储对特定对象的所有引用数,也就是说,当应用程序创建引用以及引用超出范围时,jvm

一直被模仿,从未被超越 1698

全志D1s RISC-V开发板硬件设计与Linux启动全流程解析

RISC-V架构是当前国产嵌入式处理器演进的核心方向,其启动流程涵盖从BootROM、SPL到U-Boot及Linux内核的多级引导机制。理解该流程需掌握DDR初始化、设备树适配、电源时序控制等底层原理,技术价值在于构建可追溯、可调试、可量产的最小可行系统(MVS)。典型应用场景包括边缘AI推理终端、工业HMI和轻量级网关等对成本与开源性敏感的领域。本文以全志D1s平台为载体,深入剖析基于玄铁C906内核的RISC-V SoC在真实硬件上的启动验证、电源完整性设计与Linux全链路开源实践。

weixin_32306683的博客 358

jvm——垃圾回收机制(GC)详解

什么是GC?GC 是 garbage collection 的缩写,意思是垃圾回收——把内存(特别是堆内存)中不再使用的空间释放掉;清理不再使用的对象。为什么要GC?堆内存是各个线程共享的空间,不能无节制的使用。服务器运行的时间通常都很长。累积的对象也会非常多。这些对象如果不做任何清理,任由它们数量不断累加,内存很快就会耗尽。所以GC就是要把不使用的对象都清理掉,把内存空间空出来,让项目可以持续运行下去。什么样的对象是垃圾对象?不再使用或获取不到的对象是垃圾对象。如何把垃圾对象找出来?

weixin_62458944的博客 1万+

EastWave应用案例:机箱屏蔽效能仿真

如何使用EastWave对机箱的电磁屏蔽效能进行仿真

2201_76034687的博客 1394

宏基因组分析|完整分析流程梳理

今天先从最基础的全流程框架说起,无论是刚接触的萌新,还是想查漏补缺的同行,都能找到有用的信息。

weixin_70911870的博客 3165

深入理解JVM:GC规则

GC总结 内存回收与垃圾收集器在很多时候都是影响系统性能、并发能力的主要因素之一,虚拟机提供了很多不同的垃圾收集算法,以及大量的调节参数,是因为根据实际需求调试才能获得最高的性能。 没有固定的垃圾回收组合和参数组合,也没有最优的调优方法。如下有几个调优策略 1、对象优先分配在Eden区 2、大对象优先分配在老年代,因为Eden用的复制算法,对于大对象很慢。 3、长期存活对象进去老年代。每个

努力奋斗 915

CRISPR筛选全流程指南:从文库构建到数据分析实战

功能基因组学研究需要高效解析基因型与表型的关联,高通量筛选技术是其中的关键工具。基于CRISPR系统的筛选方法通过大规模sgRNA文库扰动基因功能,结合慢病毒递送和测序分析,能够系统鉴定影响细胞增殖、耐药、病毒感染的候选基因。与RNAi或化学小分子筛选相比,CRISPR筛选具有覆盖全基因组、脱靶率低、信号清晰等优势,已广泛应用于药物靶点发现、合成致死和免疫治疗机制研究。本文围绕实验设计与操作中的核心要点展开,涵盖文库扩增、病毒滴度控制、MOI把握、筛选模式选择以及基于MAGeCK的sgRNA丰度分析,并针对

weixin_31188927的博客 283

JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代,Minor GC、Major GC和Full GC之间的区别

一、可达性分析算法(GC Roots) 有一种引用计数法,可以用来判断对象被引用的次数,在任何某一具体时刻,如果引用次数为0,则代表可以被回收。 这种实现方式比较简单,但对于循环引用的情况束手无策,所以 Java 采用了可达性分析算法。 即判断某个对象是否与 GC Roots 的这类对象之间的路径可达,若不可达,则有可能成为回收对象,被判定为不可达的对象要成为可回收对象必须至少经历两次标记过程,如果在这两次标记过程中仍然没有逃脱成为可回收对象的可能性,则基本上就真的成为可回收对象了。 具体详情可以看我另外一

Daryl的博客 1万+

无人机避障——Mid360+Fast-lio感知建图+Ego-planner运动规划(胎教级教程)

本工作将 Mid360 激光雷达、Fastlio-SLAM 和 Ego-Planner 集成,实现无人机的环境感知、定位建图和运动规划(仿真过程)—— 胎教级教程。

weixin_45390670的博客 1万+

ST7789驱动实战:从SPI时序到RGB565显示的完整配置解析

本文详细解析了ST7789液晶驱动芯片的SPI时序配置与RGB565显示实现,从数据手册解读到代码实战,涵盖SPI接口配置、关键寄存器设置及完整初始化流程。通过优化DMA传输和常见问题排查,帮助开发者高效驱动ST7789显示屏,适用于嵌入式显示项目开发。

weixin_29162439的博客 184

34.堆内存分配策略(或对象提升(Promotion)规则)总结(掌握)

目录1.堆内存分配策略(或对象提升(Promotion)规则) 1.堆内存分配策略(或对象提升(Promotion)规则) 一般情况下的策略: 1.对象会被优先分配到Eden区 2.大对象,如果Eden区放不下,就会被直接放到老年代 3.长期存活的对象(Survivor区中的对象的age超过阈值的对象),会被放到老年代 4.动态年龄判断。如果Survivor区中的相同年龄的所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象可以直接进入老年代,无须等到MaxTenuringThre

simpleGq的专栏 742

杰理AC695N/AC696N/AC701N系列芯片在线调音教程

本教程详细介绍AC695N/AC696N/AC701N芯片在线音效调试方法,包括工具准备(需安装杰理包管理器)、程序修改(需关闭USB功能并启用在线调试宏)、连接方式(USB或串口)、音效调节步骤(EQ和混响参数调整)以及配置保存。注意事项包括版本匹配、连接检查和供电稳定等,并提供常见问题解决方案。适用于快速配置实时音效调试环境并保存最终配置。

qq_42014563的博客 1402

JVM&GC Full Coverage

这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的差异也比较大,因此该文章更适合中、高级工程师阅读,做到名词解释与入门,在大神面前就是献丑了。 不过文中一些JVM参数示例都是实际项目里调优的结果,还是经受过实战考验的。 目录 JVM简介 JVM结构 2.1 方法区 2.1.1 常量池

高广超的博客 777

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JVM&GC基本知识

JVM&GC基础知识 1.三种基础gc 2.什么是g1 3.g1的四个操作阶段 4 java相关术语 4.1 Millisecond 4.2 Megabyte 4.3 demo获取内存大小(见jvm配置) 4.4 finalization机制(对象终止机制) finalize() 可达状态 可复活状态 不可达状态 4.5 Interned String 确保字符串在内存里只有一份拷贝,节省内存空间 这个内存空间指常量池 ![在这里插入图片描述](https:

weixin_44411398的博客 337

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JVM&GC(一)java引用

前言 Java中的引用有点像C++中的指针,通过引用可以对堆中的对象进行操作。在Java程序中最常见的引用类型是强引用,也是默认的引用类型。当在Java语言中使用New操作符创建一个新的对象,并将其赋值给一个变量的时候,这个变量就成为指向该对象的一个强引用。 Jva中的引用 Java中提供了四个级别的引用,强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)。 强引用 在一个线程内,无需引用直

少年闰土的博客 303

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

JVM&GC(四)-通用术语

G1(Garbage First). G1是一个并行回收器,他把内存分割为很多不相关的区间(Region),每个区间可以属于老年代或者年轻代,并且每个年代区间可以是物理上不连续的。垃圾回收时都是需要停下应用程序,不然没有办法防止应用程序的干扰,然后G1 GC可以集中精力在垃圾最多的区间上,并且只费一点点时间就可以清空这些区间里的垃圾,腾出完全空闲的区间。由于这种方式的侧重点在于处理垃圾最多的区间,所以我们给G1取一个名字:垃圾优先(Garbage First). G1内部主要有四个操作阶段: 年轻代回收(

少年闰土的博客 388

JAVA面试基础:JVM&GC基础_8

qianfeng_dashuju的博客 151

JAVA面试基础:JVM&GC基础_1

qianfeng_dashuju的博客 185

JAVA面试基础:JVM&GC基础_2

qianfeng_dashuju的博客 158

JAVA面试基础:JVM&GC基础_5

qianfeng_dashuju的博客 145

jvm误区--动态对象年龄判定和分配担保机制

学习jvm的人,基本都阅读过上面这段话,这里讲的是动态年龄的判定。 对于动态的判定的条件就是相同年龄所有对象大小的总和大于Survivor空间的一半, 然后算出的年龄要和MaxTenuringThreshold的值进行比较, 以此保证MaxTenuringThreshold设置太大(默认15),导致对象无法晋升。 问题的提出 场景假设 如果说非得相同年龄所有对象大小总和大于Survivo...

沉默的夏虫 2079

再也不用担心被虐啦,高频率JVM面试题,都在这里!

点击蓝色“架构文摘”关注我哟加个“星标”,天天中午 09:25,干货推送!JVM(Java虚拟机)简单来说就是运行Java代码的解释器,作为螺丝钉程序员JVM其实了解下就差不多啦,不懂JVM内部细节照样能写出优质的代码!但是一到造火箭、飞机的场景(面试)不懂JVM的你,会被面试官虐的体无完肤,本期内容列举常见的JVM面试题:说一JVM的内存结构是什么样子的?什么时候对象可以被收回?常见的垃圾回收器...

架构文摘 349

GC的判定的2种方式

注:参考 https://blog.youkuaiyun.com/qq_1681163/article/details/52277380 https://blog.youkuaiyun.com/u014142287/article/details/51424725 java的四种引用https://www.cnblogs.com/huajiezh/p/5835618.html对象是否死亡的2中判定方法:引用计数和可达性分...

imooc_000000的博客 2325

记第一次JVM性能调优(二)之MinorGC

jvm性能优化GC调优GC调优原则GC调优的目的调优实战 GC调优 GC调优原则 就我个人的理解而言,对于一个应用程序来说,应当存在四点调优原则 大多数的java应用都不需要GC调优 大部分需要GC优化的,不是参数问题,而是代码问题 优化代码带来的性能提升远远大于参数调整 GC调优应当是程序优化的最后手段 GC调优的目的 使GC的时间足够小.这个没有硬性的时间值,可以根据项目的不同而自由设定...

qq_33561065的博客 2313

JVM 晋升到老年代的动态年龄判断

虚拟机并不是永远地要求对象的年龄必须达到了MaxTenuringThreshold才能晋升老年代,如果在Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代,无须等到MaxTenuringThreshold中要求的年龄。 这个表述应该是老的虚拟机的动态年龄判断算法,其实推演一下是存在缺陷的的,请看下图:   如果此时...

javaThinker的专栏 4385
上一篇: 垃圾回收算法(7)-分代回收算法
下一篇: JVM&GC(三)-System.gc()方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值