虚拟机学习
yinbucheng
这个作者很懒,什么都没留下…
展开
-
虚拟机深入学习
1.栈中的数据都是以栈帧(Stack Frame)的格式存在,栈帧是一个内存区块,是一个数据集,是一个有关方法(Method)和运行期数据的数据集 本地变量 栈操作 栈帧数据 2,jvm加载class文件的原理 1,装载:查找和导入class文件 2,链接:其中解析是可以选择的 (1),检查:检查载入的Class文件数据的真确性原创 2016-04-05 15:28:37 · 473 阅读 · 0 评论 -
虚拟机调用函数是栈堆之间的变化
使用new就会到堆中开辟空间来存放实例对象(new Point()) 使用赋值语句就回到栈中开辟空间存放它并存放堆中指向对象的地址(如果死是Point p;它只会在栈中开辟空间其内容没有任何值) 注意刚开始堆类对象的属性会有默认值对象属性是null在构造函数中对其赋值如果是对象其值也是指向他的属性对象的地址如果调用一方法而方法中的参数又为变量这时就会到栈中把这两个变量放入原创 2016-04-05 15:27:02 · 483 阅读 · 0 评论 -
深入理解java中栈,堆常量池。。
栈: 在函数中定义的一些基本变量数据,还有对象的引用变量都在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当该变量退出该作用域后,java会自动释放掉为该变量所分配的内存空间,该内存空间可立即被另做他用。 栈也叫栈内存,是java程序的运行区,是在线程创建时创建,它的生命是跟随线程的生命,线程结束栈内存也就释放。 栈中的数据原创 2016-06-07 19:37:34 · 618 阅读 · 0 评论 -
对象访问
Object obj = new Object();的访问过程 Object obj---->这句会反映到java栈的本地变量表中,作为一个引用类型数据出现。 new Object()---->这部分反映到java堆上,形成一块存储了Object类型所有实例数据值得结构化内存,根据具体类型数据及虚拟机实现对象内存布局的不同,这块内存的长度是不固定的。 另外,在java堆中还必须包含能查找到此原创 2016-06-07 20:12:13 · 361 阅读 · 0 评论 -
理解java垃圾回收机制
常见的垃圾收集策略 1,Reference Counting(引用计数) 在每个对象中增加一个引用的计数,这个计数代表当前程序有多少个引用引用了此对象,如果此对象的引用计数变为0那么此对象就可以作为垃圾收集器的目标对象收集。 2,跟踪收集器 GC在收集一个对象的时候回判断是否有引用指向对象,在java中引用主要有4种,分别是Strong reference ,Soft refe原创 2016-06-07 20:30:32 · 280 阅读 · 0 评论 -
java中分代思想
文章出处:http://ifeve.com/jvm-yong-generation/ 聊聊JVM的年轻代 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕转载 2017-05-30 00:34:01 · 756 阅读 · 0 评论 -
Minor GC和FUllGC的区别
在Plumbr的工作过程中遇到GC间隙功能探测问题使我不得不关注相关文章,书籍,简报。自始至终,我不止一次迷惑于 Minor, Major and Full GC 的用法。为了搞清楚这些疑惑我写这篇博客。 这篇博客期望读者了解JVM 底层 GC机制。jvm heap区 分为 Eden,Survivor,Tenured/Old区。分代概念以及不同的GC算法超出了了此次讨论的范围。 M转载 2017-05-30 15:42:00 · 7967 阅读 · 1 评论 -
CMS垃圾回收分析及优化
总体垃圾回收器搭配使用如下 我们项目中常见搭配是年轻代采用ParNew老年代 CMS+Serial Old其分代收集实现如下 minor gc为ParNew垃圾收集器为多线程收集器 major gc 为CMS垃圾收集器多线程最低停顿垃圾收集器 full gc 为serial 垃圾收集器为单线程垃圾收集器 Serial是jvm中fgc的默认行为 jvm采用CMS合理配置 //...原创 2019-05-30 14:33:55 · 2005 阅读 · 0 评论