![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 73
test001007
这个作者很懒,什么都没留下…
展开
-
1、JVM基本结构
#######################JVM学习笔记#########################内存模型关于JVM的内存模型,主要关注:方法区、堆内存、栈内存、类加载机制、垃圾回收机制。方法区:保存装载的类信息字段,方法信息方法字节码类型的常量池通常和永久区(Perm)关联在一起(jdk8中已经无永久区概念)java堆:线程共享内存区域应用系统创建的对象保存在java堆中GC回收的主...原创 2018-06-30 00:06:57 · 209 阅读 · 0 评论 -
线程指令重排
1、指令重排JVM为优化执行效率对线程内的执行顺序进行重排,对单线程来说执行指令重排并不会影响程序从上到下执行的代码逻辑。但是在多线程的情况下,则可能会出现问题。2、指令重排原则程序顺序原则:一个线程内保证语义的串行性volatile规则:volatile变量的写,先发生于读锁规则:解锁(unlock)必然发生在随后的加锁(lock)前传递性:A先于B,B先于C 那么A必然先于C线程的start方...原创 2018-06-30 12:15:44 · 1324 阅读 · 0 评论 -
JVM配置-trace跟踪参数配置
1、常用JVM配置参数Trace跟踪参数堆的分配参数栈的分配参数1.1Trace跟踪参数打印GC信息:-verbose:gc-XX:+PrintGC-XX:+PrintGCDetails打印GC详细信息-XX:+PrintGCTimeStamps打印CG发生的时间戳各个参数效果:package com.thread.study;public class GCPrint { public ...原创 2018-06-30 19:53:38 · 1321 阅读 · 0 评论 -
堆的分配参数
1、堆内存分配参数-Xmx –Xms指定最大堆和初始堆内存大小(两个参数设置一样可减少垃圾回收)-Xmx20m –Xms10m:指定最大堆内存20M,初始化堆内存10Mpackage com.thread.study;public class Heap { public static void main(String[] args) { //最大堆内存 System.out.p...原创 2018-07-01 22:19:04 · 834 阅读 · 0 评论 -
jvm栈大小设置
1、栈内存大小设置栈内存为线程私有的空间,每个线程都会创建私有的栈内存。栈空间内存设置过大,创建线程数量较多时会出现栈内存溢出StackOverflowError。同时,栈内存也决定方法调用的深度,栈内存过小则会导致方法调用的深度较小,如递归调用的次数较少。-Xss:如-Xss128k通常只有几百K决定了函数调用的深度每个线程都有独立的栈空间局部变量、参数 分配在栈上2、递归调用package c...原创 2018-07-02 20:33:06 · 19738 阅读 · 1 评论 -
GC回收算法
1、引用计数法(没有被java使用)对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器就减1。只要对象A的引用计数器的值为0,则对象A就不可能再被使用。引用计数法存在如下问题: 引用和去引用伴随加法和减法,影响性能 很难处理循环引用2、标记-清除标记-清除算法是现代垃圾回收算法的思想基础。标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段...原创 2018-07-03 21:01:58 · 4257 阅读 · 3 评论