JVM结构
JVM
Runtime data area, 运行时数据区
1. method area
在所有进程间共享
类,常量,静态变量
2. heap
在所有进程间共享。、
对象,数组
-Xms:设置堆初始值
-Xmx:设置堆最大值
分为old generation
young generation
幸存1区
幸存2区
永久代 // method area
堆设置
-Xms:初始堆大小
-Xmx:最大堆大小
-XX :NewSize=n:设置年轻代 大小
-XX:NewRatio=n:设置年轻代和老年代的比值。为3代表年轻代/老年代=1:3
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。Survivor有两个,n=3表示Eden:Survivor=3:2,一个Survivor占整个年轻代的1/5
-XX:MaxPermSize=n:设置持久化大小
收集器设置
-XX:+UseSerialGC:设置穿行收集器
-XX:+UseParallelGC:设置并行收集器
-XX:+UseParalledlOldGC:设置并行年老代收集器
-XX:+UseConcMarkSweepGC:设置并发收集器
垃圾回收统计信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
并行收集器设置
3. java stack
不共享
每个线程对应一个stack,线程栈, 方法栈
调整栈空间:java -Xss1m
stackOverflowError
OOM:out of memory内存不足
4. native method area
不共享
5. program counter register
不共享
6. 通过jvisualvm查看
a. cmd -->jvisualvm
b. 工具 --> 插件
c. 搜索visual GC 安装
7. 通过Jconsole查看类加载
finalize
回收线程
daemon
守护线程
GC
garbage collection, 垃圾回收
heap(堆)
non-heap(非堆heap以外的空间)
off-heap(离堆位于jvm之外的空间)
final(修饰符)
变量:不可改变(常量)
函数:不可重写
类:不可继承
finally
try{}catch(){}finally{}
finalize(函数)
对象被回收时调用