本文目录一览

1,metaspace 空间什么意思

metaspace就是java元空间元空间(metaspace)持久代的空间被彻底地删除后,它被一个叫元空间的区域所替代了。持久代删除了之后,JVM会忽略PermSize和MaxPermSize这两个参数,还有就是再也看不到java.lang.OutOfMemoryError: PermGen error的异常了。JDK 8的HotSpot JVM现在使用的是本地内存来表示类的元数据,这个区域就叫做元空间。元空间的特点:充分利用了Java语言规范中的好处:类及相关的元数据的生命周期与类加载器的一致。每个加载器有专门的存储空间只进行线性分配不会单独回收某个类省掉了GC扫描及压缩的时间元空间里的对象的位置是固定的如果GC发现某个类加载器不再存活了,会把相关的空间整个回收掉
期待看到有用的回答!

metaspace 空间什么意思

2,JAVA将窗口的返回值在另一个窗口接收

//在第二个窗口里做一些全局变量private String returnValue;//用于记录返回的值private boolean isOk=false;//用于判断是否点击确定//然后把以上这两个变量做一个get和set方法public void setReturnValue(String returnValue){ this.returnValue= returnValue;}public String getReturnValue(){ return returnValue;}public void setIsOk(boolean isOk){ this.isOk= isOk;}public String getIsOk(){ return isOk;}//下一步//在第二个窗口里的确定按钮里写入代码:this.returnValue = this.JTextField.getText();this.isOk = true;this.dispose(); /////////////////////////////////////////////////////// //在第一个窗口调用第二个窗口的方法里写代码:(假如第二个窗口的类名叫DgSelectValue)DgSelectValue dg = new DgSelectValue();dg.setVisible(true);if(dg.getIsOk()){ //获取第二个窗口JTextField里面输入数据 String value = dg.getReturnValue();}
在java中这是没有办法做到的,因为java不是函数式编程语言,不过可以通过传递一个接口来实现。下面解说java如何模拟:先定义一个接口:interface methodinterface{ //这个方法假如就是你想要传递的方法 public string test(string s); }一个类中的方法的参数就是这个接口: class testmethod{ //java中很麻烦的,不过下面这样是可以达到目的得 public void test(methodinterface methodinterface){ system.out.println(methodinterface.test("test")); } }因为这个接口是你定义的,所以你知道这个接口里面一定有一个叫test的方法 class method implements methodinterface{ public string test(string s) { return s; } } public class test { public static void main(string[] args) { new testmethod().test(new method()); } }在jdk8中是不需要这么复杂的,但是原理还是一样的,只不过jdk8中的lambda表达式会自动帮你处理这些事情

JAVA将窗口的返回值在另一个窗口接收

3,jvm垃圾回收有哪些算法

1.堆的分代和区域 (年轻代)Young Generation(eden、s0、s1 space) Minor GC (老年代)Old Generation (Tenured space) Major GC|| Full GC (永久代)Permanent Generation (Permanent space)【方法区(method area)】 Major GC 本地化的String从JDK 7开始就被移除了永久代(Permanent Generation ) JDK 8.HotSpot JVM开始使用本地化的内存存放类的元数据,这个空间叫做元空间(Metaspace)2.判断对象是否存活(哪些是垃圾对象) 1.引用计数(ReferenceCounting):对象有引用计数属性,增加一个引用计数加1,减少一个引用计数减1,计数为0时可回收。(无法解决对象相互循环引用的问题) 2.根搜索(GC Roots Tracing):GCRoot对象作为起始点(根)。如果从根到某个对象是可达的,则该对象称为“可达对象”(存活对象,不可回收对象)。否则就是不可达对象,可以被回收。 下图中,对象Object6、Object7、Object8虽然互相引用,但他们的GC Roots是不可到达的,所以它们将会被判定为是可回收的对象3.垃圾收集算法 1.标记-清除(Mark-Sweep)算法: 标记清除算法分为“标记”和“清除”两个阶段:首先标记出需要回收的对象,标记完成之后统一清除对象。 缺点: 1、标记和清除效率不高; 2、产生大量不连续的内存碎片,导致有大量内存剩余的情况下,由于,没有连续的空间来存放较大的对象,从而触发了另一次垃圾收集动作。2.复制(Copying)算法: 将可用内存容量划分为大小相等的两块,每次只使用其中的一块。当这一块用完之后,就将还存活的对象复制到另外一块上面,然后在把已使用过的内存空间一次清理掉。这样使得每次都是对其中的一块进行内存回收
1.垃圾回收目的:java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。ps:内存泄露是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下,java 的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有时也将其称为“对象游离”。2.由于对象进行了分代处理,因此垃圾回收区域、时间也不一样。gc有两种类型:scavenge gc和full gc。scavenge gc一般情况下,当新对象生成,并且在eden申请空间失败时,就会触发scavenge gc,对eden区域进行gc,清除非存活对象,并且把尚且存活的对象移动到survivor区。然后整理survivor的两个区。这种方式的gc是对年轻代的eden区进行,不会影响到年老代。因为大部分对象都是从eden区开始的,同时eden区不会分配的很大,所以eden区的gc会频繁进行。因而,一般在这里需要使用速度快、效率高的算法,使eden去能尽快空闲出来。full gc对整个堆进行整理,包括young、tenured和perm。full gc因为需要对整个堆进行回收,所以比scavenge gc要慢,因此应该尽可能减少full gc的次数。在对jvm调优的过程中,很大一部分工作就是对于fullgc的调节。有如下原因可能导致full gc:1.年老代(tenured)被写满2.持久代(perm)被写满3.system.gc()被显示调用4.上一次gc之后heap的各域分配策略动态变化

jvm垃圾回收有哪些算法

4,安徽省2010年上半年计算机一级考试的具体时间

考试日期 2010年上半年NCRE笔试日期为3月27日,上机考试从笔试当天下午开始(一级从上午开始),上机考试期限定为5天(至3月31日止)。笔试全国统一开考时间为3月27日上午。 安徽省关于做好2010年上半年全国计算机等级考试考务工作的通知 各市考办、考点: 根据教育部考试中心通知,现将我省2010年上半年全国计算机等级考试(以下简称“NCRE”)考务工作安排如下: 一、考试日期 2010年上半年NCRE笔试日期为3月27日,上机考试从笔试当天下午开始(一级从上午开始),上机考试期限定为5天(至3月31日止)。笔试全国统一开考时间为3月27日上午。 二、开考科目、考试大纲和报名 2010年上半年开考科目见附件一,考试大纲及教材见附件二。 计算机职业英语一级科目停考。 各考点报名时要严格按照教育部考试中心有关文件要求操作,准确采集考生的各项信息(特别是照片采集要符合相关要求,出生日期要符合规范。有保留成绩的考生,保留成绩种类和保留成绩准考证都要准确),打印《考生信息确认单》经考生本人签名后存档。 报名的具体时间由各考点根据需要自行决定。全省统一报名截止日期为2010年2月1日。 三、上机考试软件 所有上机考试科目均在Windows XP环境下进行(考试机)。上机考试局域网服务器统一使用Windows 2003操作系统。 四、试卷订单及报名数据上报 各考点报名结束后,从NCRE考务管理系统中打印试卷申报表并加盖公章,于2月2日前上报市考办,同时将报名库等数据上报至cg@mail.ahzk.net。数据一经上报,不得随意改动。考生个人身份信息有少量变动的必须在考前7天上报。 各市考办一定要将辖区内所属考点的试卷申报表(系统打印盖章的)认真审核汇总,填写《2010年(上)NCRE考试试卷申报表》(附件三)不得缺项,加盖公章后于2月4日前传真至省考试院非学历教育考试处(传真:0551-3609536),同时将原件寄送。若因工作失误,造成试卷征订错误的,将追究相关人员的责任。 各考点在3月15日前将《2010年(上)NCRE考试应急通讯录》(附件五)有关内容报市考办。市考办将辖区内所属考点的信息汇总后,于3月18日传真至省考试院非学历教育考试处。 五、试卷接送 各市考办于2010年3月24日领取试卷,地点另行通知。 试卷由中心考点组织评阅。各市考办将考点的数据光盘和答题卡等材料收齐后于2010年3月29日前送安徽大学自考办(联系电话:0551-5106804、5106740)。 六、收费 我省NCRE考试报名执行皖价费[2006]240号文件收费标准。即按80元/生/次收取,补报二级、三级单科(笔试或机试)的考生按40元/科,报一级和四级按80元/生/次执行。具体费用结算见附件四。 附件:……
附件一: 2010年(上)NCRE考试开考科目表 科 目 代 码 笔试 时间 (分钟) 上机时间(分钟) 备 注 一级 一级WPS Office 14 无 90 WPS Office2007教育部考试专用版 一级MS Office 15 无 90 上机采用MS Office2003 二级 二级C 24 90 90 上机采用VC++6.0 二级VB 26 90 90 二级VFP 27 90 90 二级JAVA 28 90 90 JDK 1.4.2和NetBeans中国教育考试版2007 二级ACCESS 29 90 90 上机采用Access2003 二级C++ 61 90 90 上机采用VC++6.0 二级Delphi 62 90 90 上机采用Delphi7.0企业版 三级 三级PC技术 33 120 60 三级信息管理技术 34 120 60 上机采用VC++6.0 三级网络技术 35 120 60 上机采用VC++6.0 三级数据库技术 36 120 60 上机采用VC++6.0 四级 四级网络工程师 41 120 无 四级数据库工程师 42 120 无 四级软件测试工程师 43 120 无

5,堆和栈的问题

1、栈(stack)— 存放函数的参数值,局部变量的值等。 2、堆(heap) — 一般由程序动态分配i,程序结束时可能由OS回收 。 main()
这是个抽象的数据类型,堆和栈都是一种数据集合的规定定义的。栈就像一个瓶子,只有一个口。顺序排列,先进后出。 堆是个非线性结构,比如一棵树两个树干,每个树干又有两个子树干,等等。明白了吗?
如果你是问的java或者c#里面的,那么看下面的资料。 内存中的堆(stack)与栈(heap) Java程序运行时有6个地方可以存储数据,它们分别是寄存器、栈、堆、静态存储、常量存储和非RAM存储,主要是堆与栈的存储。 【随机存储器 :Random Access Memory 】 栈与堆都是Java用来在RAM中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。另外,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。 【 寄存器位于CPU中 】 3 Java中数据在内存中的存储 3.1基本数据类型的存储 Java的基本数据类型共有8种,即int, short, long, byte, float, double, boolean, char(注意,并没有string的基本类型)。这种类型的定义是通过诸如int a = 3; long b = 255L;的形式来定义的,称为自动变量。值得注意的是:自动变量存的是字面值,不是类的实例,即不是类的引用,这里并没有类的存在。如int a = 3;这里的a是一个指向int类型的引用,指向3这个字面值。这些字面值的数据,由于大小可知,生存期可知(这些字面值固定定义在某个程序块里面,程序块退出后,字段值就消失了),出于追求速度的原因,就存在于栈中。 另外,栈有一个很重要的特殊性,就是存在栈中的数据可以共享。 假设我们同时定义: int a = 3; int b=3; 编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找有没有字面值为3的地址,没找到,就开辟一个存放3这个字面值的地址,然后将a指向3的地址。接着处理int b = 3;在创建完b这个引用变量后,由于在栈中已经有3这个字面值,便将b直接指向3的地址。这样,就出现了a与b同时均指向3的情况。 【上文提到了"引用+数值+内存地址"这三个名词,其中变量名就是引用,给变量赋的值就是数值, 而所提到的内存是抽象的内容,让引用指向的不是数值,而是存取数值的那块内存地址】 定义完a与b的值后,再令a = 4;那么,b不会等于4,还是等于3。在编译器内部,遇到时,它就会重新搜索栈中是否有4的字面值,如果没有,重新开辟地址存放4的值;如果已经有了,则直接将a指向这个地址。因此a值的改变不会影响到b的值。 【定义变量,给变量赋值,然后在编译的过程中就可以将其保存在内存中了】 3.2对象的内存模型 在Java中,创建一个对象包括对象的声明和实例化两步,下面用一个例题来说明对象的内存模型。 假设有类Rectangle定义如下: 【Rectangle:矩形】 class Rectangle3.5数组的内存分配 当定义一个数组,int x[];或int []x;时,在栈内存中创建一个数组引用,通过该引用(即数组名)来引用数组。x=new int[3];将在堆内存中分配3个保存int型数据的空间,堆内存的首地址放到栈内存中,每个数组元素被初始化为0。 4 内存空间的释放 栈上变量的生存时间受限于当前函数的生存时间,函数退出了,变量就不存在了。在堆中分配的对象实例,当不再有任何一个引用变量指向它时,这个对象就可以被垃圾回收机制回收了。 5 总结堆栈 再来看Java的内存,栈内存用来存放一些基本类型的变量和数组及对象的引用变量,而堆内存主要是来放置对象实例的。明白这个就能很好的解释多态、继承、覆盖方面的问题了

6,JVM有哪些垃圾回收算法

1.Mark-Sweep(标记-清除)算法这是最基础的垃圾回收算法,之所以说它是最基础的是因为它最容易实现,思想也是最简单的。标记-清除算法分为两个阶段:标记阶段和清除阶段。标记阶段的任务是标记出所有需要被回收的对象,清除阶段就是回收被标记的对象所占用的空间。2.Copying(复制)算法  为了解决Mark-Sweep算法的缺陷,Copying算法就被提了出来。它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用的内存空间一次清理掉,这样一来就不容易出现内存碎片的问题。3.Mark-Compact(标记-整理)算法(压缩法)为了解决Copying算法的缺陷,充分利用内存空间,提出了Mark-Compact算法。该算法标记阶段和Mark-Sweep一样,但是在完成标记之后,它不是直接清理可回收对象,而是将存活对象都向一端移动,然后清理掉端边界以外的内存。4.Generational Collection(分代收集)算法分代收集算法是目前大部分JVM的垃圾收集器采用的算法。它的核心思想是根据对象存活的生命周期将内存划分为若干个不同的区域。一般情况下将堆区划分为老年代(Tenured Generation)和新生代(Young Generation),老年代的特点是每次垃圾收集时只有少量对象需要被回收,而新生代的特点是每次垃圾回收时都有大量的对象需要被回收,那么就可以根据不同代的特点采取最适合的收集算法。
1.标记清除标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。在标记阶段首先通过根节点(GC Roots),标记所有从根节点开始的对象,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象。适用场合:存活对象较多的情况下比较高效适用于年老代(即旧生代)缺点:容易产生内存碎片,再来一个比较大的对象时(典型情况:该对象的大小大于空闲表中的每一块儿大小但是小于其中两块儿的和),会提前触发垃圾回收扫描了整个空间两次(第一次:标记存活对象;第二次:清除没有标记的对象)2.复制算法从根集合节点进行扫描,标记出所有的存活对象,并将这些存活的对象复制到一块儿新的内存(图中下边的那一块儿内存)上去,之后将原来的那一块儿内存(图中上边的那一块儿内存)全部回收掉请点击输入图片描述现在的商业虚拟机都采用这种收集算法来回收新生代。适用场合:存活对象较少的情况下比较高效扫描了整个空间一次(标记存活对象并复制移动)适用于年轻代(即新生代):基本上98%的对象是"朝生夕死"的,存活下来的会很少缺点:需要一块儿空的内存空间需要复制移动对象3.标记整理复制算法的高效性是建立在存活对象少、垃圾对象多的前提下的。这种情况在新生代经常发生,但是在老年代更常见的情况是大部分对象都是存活对象。如果依然使用复制算法,由于存活的对象较多,复制的成本也将很高。请点击输入图片描述标记-压缩算法是一种老年代的回收算法,它在标记-清除算法的基础上做了一些优化。首先也需要从根节点开始对所有可达对象做一次标记,但之后,它并不简单地清理未标记的对象,而是将所有的存活对象压缩到内存的一端。之后,清理边界外所有的空间。这种方法既避免了碎片的产生,又不需要两块相同的内存空间,因此,其性价比比较高。4.分代收集算法分代收集算法就是目前虚拟机使用的回收算法,它解决了标记整理不适用于老年代的问题,将内存分为各个年代。一般情况下将堆区划分为老年代(Tenured Generation)和新生代(Young Generation),在堆区之外还有一个代就是永久代(Permanet Generation)。在不同年代使用不同的算法,从而使用最合适的算法,新生代存活率低,可以使用复制算法。而老年代对象存活率搞,没有额外空间对它进行分配担保,所以只能使用标记清除或者标记整理算法。请点击输入图片描述垃圾回收机制根据直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置所说,年轻代分为Eden区和survivor区(两块儿:from和to),且Eden:from:to==8:1:1。请点击输入图片描述jvm内存结构1)新产生的对象优先分配在Eden区(除非配置了-XX:PretenureSizeThreshold,大于该值的对象会直接进入年老代);2)当Eden区满了或放不下了,这时候其中存活的对象会复制到from区。这里,需要注意的是,如果存活下来的对象from区都放不下,则这些存活下来的对象全部进入年老代。之后Eden区的内存全部回收掉。3)之后产生的对象继续分配在Eden区,当Eden区又满了或放不下了,这时候将会把Eden区和from区存活下来的对象复制到to区(同理,如果存活下来的对象to区都放不下,则这些存活下来的对象全部进入年老代),之后回收掉Eden区和from区的所有内存。4)如上这样,会有很多对象会被复制很多次(每复制一次,对象的年龄就+1),默认情况下,当对象被复制了15次(这个次数可以通过:-XX:MaxTenuringThreshold来配置),就会进入年老代了。5)当年老代满了或者存放不下将要进入年老代的存活对象的时候,就会发生一次Full GC(这个是我们最需要减少的,因为耗时很严重)。垃圾回收有两种类型:Minor GC 和 Full GC。1.Minor GC对新生代进行回收,不会影响到年老代。因为新生代的 Java 对象大多死亡频繁,所以 Minor GC 非常频繁,一般在这里使用速度快、效率高的算法,使垃圾回收能尽快完成。2.Full GC也叫 Major GC,对整个堆进行回收,包括新生代和老年代。由于Full GC需要对整个堆进行回收,所以比Minor GC要慢,因此应该尽可能减少Full GC的次数,导致Full GC的原因包括:老年代被写满、永久代(Perm)被写满和System.gc()被显式调用等。垃圾回收算法总结1.年轻代:复制算法1) 所有新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。2) 新生代内存按照8:1:1的比例分为一个eden区和两个survivor(survivor0,survivor1)区。一个Eden区,两个 Survivor区(一般而言)。大部分对象在Eden区中生成。回收时先将eden区存活对象复制到一个survivor0区,然后清空eden区,当这个survivor0区也存放满了时,则将eden区和survivor0区存活对象复制到另一个survivor1区,然后清空eden和这个survivor0区,此时survivor0区是空的,然后将survivor0区和survivor1区交换,即保持survivor1区为空, 如此往复。3) 当survivor1区不足以存放 eden和survivor0的存活对象时,就将存活对象直接存放到老年代。若是老年代也满了就会触发一次Full GC(Major GC),也就是新生代、老年代都进行回收。4) 新生代发生的GC也叫做Minor GC,MinorGC发生频率比较高(不一定等Eden区满了才触发)。2.年老代:标记-清除或标记-整理1) 在年轻代中经历了N次垃圾回收后仍然存活的对象,就会被放到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象。2) 内存比新生代也大很多(大概比例是1:2),当老年代内存满时触发Major GC即Full GC,Full GC发生频率比较低,老年代对象存活时间比较长,存活率标记高。以上这种年轻代与年老代分别采用不同回收算法的方式称为"分代收集算法",这也是当下企业使用的一种方式3. 每一种算法都会有很多不同的垃圾回收器去实现,在实际使用中,根据自己的业务特点做出选择就好。
常用的垃圾回收算法有: (1).引用计数算法: 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的对象就是不再被使用的,垃圾收集器将回收该对象使用的内存。 引用计数算法实现简单,效率很高,微软的com技术、actionscript、python等都使用了引用计数算法进行内存管理,但是引用计数算法对于对象之间相互循环引用问题难以解决,因此java并没有使用引用计数算法。 (2).根搜索算法: 通过一系列的名为“gc root”的对象作为起点,从这些节点向下搜索,搜索所走过的路径称为引用链(reference chain),当一个对象到gc root没有任何引用链相连时,则该对象不可达,该对象是不可使用的,垃圾收集器将回收其所占的内存。 主流的商用程序语言c#、java和lisp都使用根搜素算法进行内存管理。 在java语言中,可作为gc root的对象包括以下几种对象: a. java虚拟机栈(栈帧中的本地变量表)中的引用的对象。 b.方法区中的类静态属性引用的对象。 c.方法区中的常量引用的对象。 d.本地方法栈中jni本地方法的引用对象。 java方法区在sun hotspot虚拟机中被称为永久代,很多人认为该部分的内存是不用回收的,java虚拟机规范也没有对该部分内存的垃圾收集做规定,但是方法区中的废弃常量和无用的类还是需要回收以保证永久代不会发生内存溢出。 判断废弃常量的方法:如果常量池中的某个常量没有被任何引用所引用,则该常量是废弃常量。 判断无用的类: (1).该类的所有实例都已经被回收,即java堆中不存在该类的实例对象。 (2).加载该类的类加载器已经被回收。 (3).该类所对应的java.lang.class对象没有任何地方被引用,无法在任何地方通过反射机制访问该类的方法。 java中常用的垃圾收集算法: (1).标记-清除算法: 最基础的垃圾收集算法,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成之后统一回收掉所有被标记的对象。 标记-清除算法的缺点有两个:首先,效率问题,标记和清除效率都不高。其次,标记清除之后会产生大量的不连续的内存碎片,空间碎片太多会导致当程序需要为较大对象分配内存时无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。 (2).复制算法: 将可用内存按容量分成大小相等的两块,每次只使用其中一块,当这块内存使用完了,就将还存活的对象复制到另一块内存上去,然后把使用过的内存空间一次清理掉。这样使得每次都是对其中一块内存进行回收,内存分配时不用考虑内存碎片等复杂情况,只需要移动堆顶指针,按顺序分配内存即可,实现简单,运行高效。 复制算法的缺点显而易见,可使用的内存降为原来一半。 (3).标记-整理算法: 标记-整理算法在标记-清除算法基础上做了改进,标记阶段是相同的标记出所有需要回收的对象,在标记完成之后不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,在移动过程中清理掉可回收的对象,这个过程叫做整理。 标记-整理算法相比标记-清除算法的优点是内存被整理以后不会产生大量不连续内存碎片问题。 复制算法在对象存活率高的情况下就要执行较多的复制操作,效率将会变低,而在对象存活率高的情况下使用标记-整理算法效率会大大提高。 (4).分代收集算法: 根据内存中对象的存活周期不同,将内存划分为几块,java的虚拟机中一般把内存划分为新生代和年老代,当新创建对象时一般在新生代中分配内存空间,当新生代垃圾收集器回收几次之后仍然存活的对象会被移动到年老代内存中,当大对象在新生代中无法找到足够的连续内存时也直接在年老代中创建。

文章TAG:怎么  回收  空间  什么  jdk8怎么回收  空间什么意思  
下一篇