
JVM
文章平均质量分 88
unhappy404
技术会过时但思维不会
展开
-
JVM内存模型最新面试题(持续更新)
java中创建的对象放在哪里?动态年龄判断?空间担保机制?CMS和G1收集器?浮动垃圾?为什么使用标记清除?Region的划分?原创 2024-05-15 19:16:07 · 516 阅读 · 0 评论 -
jvm在分配内存的时候如何保证线程安全?
分配内存的时候为什么会线程不安全?因为JVM堆内存是共享的创建对象是会在多个线程中都会出现的操作线程在new对象的时候,需要拿一块内存去存放,可以理解为需要从一个空闲内存列表中拿取空闲内存。如果不做任何限制,那么多线程的场景下,极有可能出现多个线程分配到同一块内存的情况。也就是所谓的线程不安全了如何解决解决线程不安全的思想大概可以归为两类给线程不安全的方法加锁线程隔离解决方法1-加锁:一个很通用的思想就是,给线程不安全的操作加锁同样适用于分配内存如果我们给jvm堆中,分配内存这原创 2022-02-21 17:39:59 · 1781 阅读 · 0 评论 -
OOM的排查思路
什么是OOM简单来说,就是程序的内存不够了,挂掉了OOM的原因oom的原因其实就一个,内存不够了,我们要细分的就是哪里的内存不够了,以及为什么内存不够了栈溢出这种情况属实比较少,一般就是栈调用太深了,比如有人写了超长超长的递归方法。方法区溢出方法区存的都是类装载的静态结构,那什么情况会造成这种现象呢?如果是系统启动类加载的时候出现OOM,那说明类太多了,方法区内存不够用了,就考虑是不是加大方法区的内存或者干脆加大JVM的大小,或者反向思考,是不是类真的太多了?是否需要拆服务?如果是运行中原创 2021-05-19 17:59:45 · 9796 阅读 · 1 评论 -
最全的GC学习文章
垃圾回收-GC什么是GC为什么要GCGC的对象是什么GC线程如何确定一个对象为垃圾引用计数法 Reference Counting可达性分析算法/根搜索算法 GC Roots Tracingjava中的四种引用怎么回收一个对象标记/清除算法 Mark-Sweep复制算法 Copying标记整理算法 Mark-Compact分代收集算法GC事件垃圾收集器GC日志IDEA中查看GC日志分析GC日志GC日志分析工具GC easyGCViewer需要有jvm内存模型的概念什么是GCGC就是垃圾回收,不是原创 2021-04-25 21:26:57 · 502 阅读 · 1 评论 -
java运行机制-类的加载
在学习类的加载机制前,要对jvm的内存模型以及jvm的作用有一个起码的认知,请参见前一篇博客链接: java内存模型.java类加载机制类加载的意义类加载的过程1.载入类加载器2.验证文件格式验证元数据验证字节码验证符号引用验证3.准备4.解析5.初始化类加载的时机类加载的意义什么是类的加载呢?它有什么意义,是用来干嘛的?其实前面学jvm的时候,我们已经对jvm的作用做了一个核心的总结:解释执行java的字节码,将它翻译成具体平台的机器指令去执行,达到全平台通用的效果这里的java字节码其实.原创 2021-04-23 17:16:01 · 232 阅读 · 0 评论 -
java内存模型
java内存模型随着jdk版面的迭代,也发生了一些变化java内存模型jdk、jre、jvm的区别什么是JVMjdk1.7的内存模型java内存模型JMMjvm虚拟机对java内存的实现HeapMethod程序计数器虚拟机栈本地方法栈jdk1.6、1.7、1.8的变化1.6到1.7变化-静态变量和字符串常量池1.7到1.8变化-移除永久代,增加元数据区内存监控jdk、jre、jvm的区别可以参考这篇文章写的,简明扼要:jdk、jre、jvm的区别简单概述如下:从小到大的阐述的话:jvm是.原创 2021-04-22 20:26:41 · 305 阅读 · 0 评论