java虚拟机:
JDK ,JRE ,JVM 依次包含关系
Java8中关系如下
Java虚拟机内存管理:
栈满的时候就会报StackOverFlowError.
TEST方法不断进栈,导致超过栈的最大值。
-Xmx -Xms 修改堆内存的大小
垃圾回收在方法区比较少,
运行时常量池
s1,s2 中的内容是一个常量,会放在运行时常量池中。运行时常量池中类似于Stringtable中存放Hashset,以为hashset是无序,不可重复的。所以s1,s2引用的是同一个地址。
s1 s2 中的abc成为字节码常量,运行的时候也会产生常量?会的,比如s3.intern()。
直接内存
NIO :基于通道的,有缓冲区的方式。它可以使用native方法,直接申请堆外内存。不受制于java虚拟机的内存制约。