Java面试基础知识抽象类和接口有什么区别,调用方法有什么区别Jvm垃圾回收首先要知道新生代和老年代新生代:the存储生命周期短的对象区域。OldAge:存放长生命周期对象的区域。mark-clear算法遍历内存对象,将需要清除的垃圾标记一次,再次遍历,回收标记的内存。缺点:效率:需要遍历两次空间:当找不到需要的大内存时,需要gc复制算法将内存1:1分成两部分。如果左侧已满,则触发gc,在左侧垃圾清理完毕后,将剩余的存活对象清理干净。向右移动。这时左边是空的,右边还有剩余的物体。下次从右边开始,再复制到左边,如此循环。优缺点:解决内存碎片问题,但内存利用率太低难以回收。GC发生时,需要回收的对象非常多,存活下来的很少。因此,需要移动到另一块内存的对象很少,所以没有必要按1:1划分内存空间。而是将整个新生代按照8:1:1的比例分成三部分,最大的一块称为伊甸园(Eden)区,两个较小的分别称为ToSurvivor和FromSurvivor。第一次GC时,只需要将Eden中存活的对象复制到To中。然后整个伊甸园区域将被恢复。再次GC时,将Eden和Toalive复制到From,重复这个过程。这样,每个新生代的可用内存占整个新生代的90%,大大提高了内存利用率。但是,不能保证存活对象的数量总是小于新生代的10%。这时候复制过去是无法保存的,所以这里会使用另一块内存,叫做老年代,来保证老年代的分配和存储对象。如果不够会抛出OOM。老年代:存放新生代存活多次的对象(默认15次)。mark-sortingalgorithm因为前面的复制算法对象的存活率比较高,一直复制复制是没有意义的,浪费时间。因此,针对老年代提出了一种“标记排序”的算法。执行步骤:标记:对需要回收的对象进行标记整理:让存活的对象移动到内存的一端,然后直接清理无用的内存。String常用的方法有哪些1.length()方法确定字符串的长度2.indexof()和lastindexof()索引字符在字符串中的位置3.charAt()可以得到字符处指定索引并返回字符索引eg:Strings="helloworld";System.out.println("s.charAt(2)")导致4java字符串反转publicclassTest{publicstaticvoidmain(String[]args){Strings="abcd";StringBuffersb=newStringBuffer(s);字符串a=sb.reverse().toString();System.out.println(a);链接【https://blog.csdn.net/a201148...】ps:理解容器为collection集合类线程安全Vector:比Arraylist多了一种同步机制(线程安全)。Hashtable:它比Hashmap更线程安全。ConcurrentHashMap:是一个高效但线程安全的集合。Stack:Stack,也是线程安全的,继承自Vector。伪器publicstaticvoidmain(String[]args){List
