** j2sdk是JAVA的开发环境包它包含JDK(开发工具包,包含JRE)和JRE(运行时环境包),简称JDK。J2SDK包含很多东西,比如java language、的、Deloyment等。**
** Appletviewer 是运行applet(即Java小应用程序,是可随网页下载到客户端由浏览器解释执行的java程序)的,applet不用main方法,继承applet类即可**
TreeSet和linkedHashSetTreeSet自然排序、linkedHashSet按添加顺序排序
TreeSet使用二叉树的原理对新add()的对象按照指定的顺序排序(升序,降序)**,每增加一个对象都会进行排序,将对象插入的二叉树指定的位置
HashSet存储元素的顺序并不是按照存入时的顺序(和List显然不同)而是按照哈希值来存的所以取数据也是按照哈希值取的
linkedHashSet继承于HashSet,是具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。此实现与 HashSet 的不同之外在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,即按照将元素插入到 set 中的顺序(插入顺序)进行迭代。
Java类成员的访问控制权限public > protected > 同包(default) > private
基类就是父类,也叫超类。导出类就是子类,也叫派生类
java.exe是java虚拟机,javadoc.exe用来制作java文档,jdb.exe是java的调试器,javaprof.exe是剖析工具
JAVA虚拟机中通常使用UTF-16的方式保存一个字符
ResourceBundle能够依据Local的不同,选择性的读取与Local对应后缀的properties文件,以达到国际化的目的。
CMSCMS全称Concurrent Mark Sweep,是一款并发的、使用标记-清除算法的垃圾回收器,以牺牲吞吐量为代价来获的最短回收停顿时间的垃圾回收器,对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。CMS的基础算法是:标记-清除
它的过程可以分为以下6个步骤:
初始标记(STW initial mark)并发标记(Concurrent marking)并发预清理(Concurrent precleaning)重新标记 (STW remark)并发清理(Concurrent sweeping)并发重置(Concurrent reset)
- 初始标记:在这个阶段,需要虚拟机停顿正在执行的任务,官方的叫法STW(Stop The Word)。这个过程从垃圾回收的“根对象”开始,只扫描到能够和“根对象”直接关联的对象,并作标记。所以这个过程虽然暂停了整个JVM,但是很快就完成了。并发标记:这个阶段紧随初始标记阶段,在初始标记的基础继续向下追溯标记。并发标记阶段,应用程序的线程和并发标记的线程并发执行,所以用户不会感受到停顿。并发预清理:并发预清理阶段仍然是并发的。在这个阶段,虚拟机查找在执行并发标记阶段新进入老年代的对象(可能会有一些对象从新生代晋升到老年代,或者有一些对象被分配到老年代)。通过重复扫描,减少下一个阶段“重新标记”的工作,因为下一个阶段会Stop The World重新标记:这个阶段会暂停虚拟机,收集器线程扫描在CMS堆中剩余的对象。扫描从"根对象"开始向下追溯,并发处理对象关联。并发清理:清理垃圾对象,这个阶段收集线程和应用程序线程并发执行并发重置:这个阶段,重置CMS收集器的数据结构,等待下一次垃圾回收。
类方法是指用Static修饰的方法,普通方法叫做对象方法
线程进程- 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程(通过说的主线程)。资源分配给进程,同一进程的所有线程共享该进程的所有资源。线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。处理机分给线程,即真正在处理机上运行的是线程。线程是指进程内的一个执行单元,也是进程内的可调度实体。
instance是java的二元运算符,用来判断他左边的对象是否为右面类(接口,抽象类,父类)的实例
JVM参数配置-Xms:1G , 就是说初始堆大小为1G
-Xmx:2G , 就是说最大堆大小为2G
-Xmn:500M ,就是说年轻代大小是500M(包括一个Eden和两个Survivor)
-XX:MaxPermSize:64M , 就是说设置持久代最大值为64M
-XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法
-XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1
运行时常量池是什么
运行时常量池是每一个类或接口的常量池的运行时表示形式。 具体体现就是在java编译后生成的.class文件中,会有class常量池,也就是静态的运行时常量池。
运行时常量池存放的位置
运行时常量池一直是方法区的一部分,在不同版本的jdk中,由于方法区位置的变化,运行时常量池所处的位置也不一样.JDK1.7及之前方法区位于永久代.由于一些原因在JDK1.8之后彻底祛除了永久代,用元空间代替。
运行时常量池存放什么?
存放编译期生成的各种字面量和符号引用;(字面量和符号引用不懂的同学请自行查阅) 运行时常量池中包含多种不同的常量,包括编译期就已经明确的数值字面量,也包括到运行期解析后才能够获得的方法或者字段引用。 此时不再是常量池中的符号地址了,这里换为真实地址。
运行时常量池与字符串常量池?
字符串常量池:在JVM中,为了减少相同的字符串的重复创建,为了达到节省内存的目的。会单独开辟一块内存,用于保存字符串常量,这个内存区域被叫做字符串常量池.
字符串常量池位置?
JDK1.6时字符串常量池,被存放在方法区中(永久代),而到了JDK1.7,因为永久代垃圾回收频率低;而字符串使用频率比较高,不能及时回收字符串,会导致导致永久代内存不足,就被移动到了堆内存中。



