视频里面for到底是创建了一万个什么样的对象呀,是创建了一万个类似这样 的对象吗:第一个对象是"0"第二个对象是"01",第三个对象是"012",以此类推,直到"012....9999"。如果是这样的话为啥不能后一个对象直接把前一个给覆盖掉,这样不是更好吗
String str=""; for(int i=0;i<10000;i++){ str+=i; }
因为是String类型的,String类型是不会被覆盖掉的,你有几个,就都会放在常量池里,所以在循环里创建Sring对象是很占用内存的,这个一定要注意
垃圾回收过程一般分为两步,是哪两步?
发现垃圾-->回收垃圾
垃圾回收常见的两种算法是什么?
引用技术法、引用可达法
堆内存划分成:年轻代、年老代、永久代。垃圾回收器划分成:Minor GC、Major GC、Full GC。这三种垃圾收回器都对应哪些区域?
Minor GC:年轻代 Eden区
Major GC: 年老代 Survivor区
Full GC: 全部回收
对JVM调优的过程中,很大一部分工作就是对于Full GC的调节。这句话对吗?
对
System.gc()的作用是什么?
仅仅为通知JVM调用Full GC
对JVM调优的过程中,很大一部分工作就是对于Full GC的调节。这句话对吗?对,JVM调优是属于更为个性化的底层调优,oracle官方已经定义好的 jvm 默认参数,已经足够满足很多需求。
执行System.gc()函数的作用只是提醒或告诉虚拟机,希望进行一次垃圾回收
方法区中存储的内容不是存活最久的吗?比如:类信息,只要程序开着就一直在,程序关闭后就没了,除了内存满了之后,启动Full GC清理一下,我就想问方法区中存储的信息什么时候结束?
后面会讲GC垃圾处理机制,到时候理解一下~