• Java笔记


    1.问:JVM垃圾收集器有哪些?

    答:Serial收集器:是一个单线程的收集器,只会使用一个CPU或一条收集线程去完成垃圾收集工作,在进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。
    ParNew收集器:是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为与Serial收集器完全一样。
    CMS收集器:是一种以获取最短回收停顿时间为目标的收集器。过程分为以下四个步骤:
    初始标记
    并发标记
    重新标记
    并发清除 来自:http://api.codertopic.com/itapi/html5/itshare.htm

    2.问:JVM内存分布有哪些?

    答:程序计数器:是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。
           程序中的分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。
    由于多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,故该区域为线程私有的内存。 虚拟机栈:描述的是Java方法执行的内存模型,用于存储局部变量表、操作数栈、动态链接、方法出口等。 堆: 是Java虚拟机所管理的内存中最大的一块,Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建,存放所实例。 方法区:用于存放已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。HotSVM针对该区域也进行GC,主要是常量回收以及类。 来自:http://api.codertopic.com/itapi/html5/itshare.htm

     3.i++和++i 哪个效率高?

    因为前置操作需要做的工作更少,只需要加1后返回加1后的结果即可。
    而后置操作符则必须先保存操作数原来的值,以便返回未加1之前的值作为操作的结果。
    对于int对象和指针,编译器可优化掉这项额外工作。但是对于更多的复杂迭代器类型,这种额外工作可能会花费更大代价。

     4.Iterator和ListIterator的区别是什么?

    Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。
    Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。
    ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。
  • 相关阅读:
    代办事项
    问题总结2015/05/05
    Android Studio 更新
    Android 防内存泄露handler
    android canvas 绘图笔记
    Android Studio compile error : enum constant INSTANT_RUN_REPLACEMENT does not exist in class
    android Studio 配置LUA 开发环境
    Android 性能优化之(1)-MAT使用教程
    shareSdk打包报错解决办法
    Android 事件分发机制
  • 原文地址:https://www.cnblogs.com/coloz/p/10939301.html
Copyright © 2020-2023  润新知