
深入理解java虚拟机
秦先生的小太阳
这个作者很懒,什么都没留下…
展开
-
两种对象访问的方式
由于虚拟机的不同,我们在创建对象,访问对象时的方式也不同。 如果某方法中创建一个对象,比如: Object obj=new Object(); 在java虚拟机的内存划分一文中说过,方法被调用的过程就是方法不断进栈的过程,也是栈帧不断创建的过程。栈帧中包含局部变量表,Object obj存储在栈帧的局部变量表中,是引用数据类型(reference)。...原创 2019-02-28 17:07:31 · 319 阅读 · 0 评论 -
虚拟机内存溢出分类以及内存参数设置
堆内存溢出: 堆的最小值:-Xms 堆的最大值:-Xmx 堆的最大值参数-Xmx与最小值参数-Xms设置为一样即可避免自动扩展 堆内存异常时dump出堆转储快照:-XX:+HeapDumpOnOutOfMemoryError 堆内存异常处理:首先判断是内存溢出还是内存泄露。如果是内存泄露,通过工具查看泄露对象到GC ...原创 2019-03-04 12:01:15 · 624 阅读 · 0 评论 -
java虚拟机的内存划分
java虚拟机在运行时,会把内存划分为数据区,不同的内存区域作用不同,生命周期不同。大致分为以下几个数据区:上图来源于网络。这些区域的作用各不相同,大致说明各个区域作用:程序计数器:主要是用于记录程序当前运行的位置,它控制具体执行哪一行代码。我们都知道,java代码在编译之后会成为字节码文件(.class),java虚拟机来执行字节码文件运行程序。由上图可知,程序计数器是线程隔离的数据...原创 2019-02-28 15:44:36 · 212 阅读 · 0 评论 -
对象的回收
看深入理解java虚拟机一书,关于垃圾回收机制回收对象依据的总结: 对象的回收: 垃圾回收机制回收对象肯定是回收那些已经死亡的对象,不被使用的对象。确定死亡对象的依据可以使用引用计数算法。就是给对象中添加一个引用计数器,当该对象被引用时,计数器就+1;该引用失效时,计数器-1。当任意时刻,计数器的值为0时,就认为该对象是不再可能被使用的。这种算法简单且...原创 2019-03-04 16:09:24 · 734 阅读 · 0 评论