JVM
文章平均质量分 79
你好y
这个作者很懒,什么都没留下…
展开
-
JMM--java内存模型
JMM内存模型java线程内存模型是标准化的,屏蔽掉了底层不同计算机的区别JMM数据原子操作jvmJMM数据原子操作详解:JMM缓存不一致问题:多线程的共享变量在某线程读取某个变量之前,先加一个锁lock,表示这个主内存中的变量被这个线程独占,其他线程访问不了,只有当独占的线程执行完毕,才会释放锁unlock。这样解决了多个线程不可见的问题,但是让原本多核cpu程序并行执行变成了串行执行,效率降低,所以现在不使用这种方式。JMM缓存不一致问题详解当变量用volatile修饰原创 2021-08-18 08:27:18 · 87 阅读 · 0 评论 -
GC介绍与相关算法
GC作用区域:JVM在进行GC时,并不是对这三个区域统一回收。大部分时候,回收都是新生代新生代幸存区(form,to)老年区GC两种类:轻GC(普通的GC)(新生代,幸存区),重GC(全局GC)(全部)GC题目:1、JVM的内存模型和分区,详细到每个区放什么?由栈、堆、本地方法栈、方法区、程序计数器栈:方法、对象的引用、8大基本数据类型堆:实例的对象,成员变量(非static)方法区:方法区是所有线程共享的,所有定义的方法的信息都保存在该区域,静态stati原创 2021-08-15 15:35:21 · 209 阅读 · 0 评论 -
堆内存调节以及如何找OOM错误
背景先了解一下三种JVM1、Sun公司2、BEA3、IBM下面进入正话堆Heap, 一个JVM只有一个堆内存,堆内存的大小是可以调节的。类加载器读取了类文件后,一般会把什么东西放在堆中呢??类,方法,常量,变量,保存我们所有引用类型的真实对象;堆内存中还要细分为三个区域:新生区(伊甸园区)Young/New养老区 old永久区 Perm那new出来的对象应该进入那个区呢?这个类似于打战:第一次回收没被回收活下来了就会去到幸存区。幸存区又包含0区和1区,0区,1区会动原创 2021-08-15 09:58:53 · 253 阅读 · 0 评论 -
JVM--栈
1、栈(桶)队列(管道FIFO: First Input First Output)吃不了学习的苦那就只能吃生活的苦为什么main方法先执行,后结束??因为main方法先入栈,然后main方法里面再调用其他方法,其他方法再入栈栈:栈内存,主管程序的运行,生命周期和线程同步。线程结束,栈内存也释放了, 即栈不存在垃圾回收问题 (一旦线程结束,栈就over)栈里面会存放的东西:8大基本类型+ 对象引用(存的地址)+实例的方法在这里随便回顾一下java的数据类型Java中的数据类型J原创 2021-08-15 09:40:41 · 73 阅读 · 0 评论 -
Java对象在内存中实例化
Java对象在内存中实例化的过程在这个过程会用到的三个区域:栈区、堆区、方法区栈区:每个线程都包含一个栈区,栈中只保存基本数据类型的值和对象的引用以及基础数据的引用每个栈中的数据(基本数据类型和对象的引用)都是私有的,其他栈是无法进行访问的栈分为三个部分:基础类型变量区,执行环境上下文,操作指令区(存放操作指令)方法区:又称为静态区,和堆一样,被所有的线程共享静态变量、常量、类信息(构造方法、接口定义)、运行时的常量池存放在方法池中,但是实例变量存在堆内存中,和方法区无关。(stati转载 2021-08-15 09:28:08 · 1494 阅读 · 0 评论 -
Native、方法区
Native、方法区重要!!初入思考:一个java类Thread既不是抽象类也不是接口,里面放着这个方法,不报错???因为带了native关键字native关键字:凡是带了它的方法,说明java的作用范围达不到了,会去调用c语言的库。会进入本地方法栈,调用本地方法接口 JNI(java native interface)。本地方法接口(JNI)的作用:就是扩展java方法的使用,融合不同的编程语言为java所用历史背景:java一开始想调用C,C++的程序,它在内存区域中专门开辟了一块标原创 2021-08-15 09:25:47 · 147 阅读 · 0 评论 -
JVM初始(类加载器、双亲委派机制)
1、JVM的位置jvm(软件)在操作系统之上,程序跑在jvm上,jre里面包含jvm。操作系统也是软件,2、JVM的体系结构jvm在中间,操作系统在下面, .java编译成.class ,类装载器,运行期异常不能捕获。栈里面没有垃圾,用完就弹出去了。栈里面要有垃圾程序就崩了。main方法放在最下面,来一个放上面,如果有垃圾,main就被堵住了,程序就死了。方法区属于特殊的堆,所谓的jvm的调优,就是在调堆## 3、类加载器作用:加载Class文件 new Student(); 由抽象原创 2021-08-15 09:05:18 · 66 阅读 · 0 评论