今天周六,又开始啃一遍《深入理解java虚拟机》每次读的感觉不一样,大学代码量较少,读起来也就死记硬背。 1.堆:长度可变,运行时使用的变量;存放对象(new )和数组之类; 2.栈:长度可变,在分配内存之前,固定了其大小,分配之后大小不可变。存放基本数据类型和对象引用 3.堆栈:JVM的调用链 J ...
分类:
其他好文 时间:
2017-09-16 19:07:50
阅读次数:
293
这几天我再次阅读了《深入理解Java虚拟机》之第二章“Java内存区域与内存溢出异常”,同时也参考了一些网上的资料,现在把自己的一些认识和体会记录一下。 (本文为博主原创文章,转载请注明出处) 一、概述 在网上看到很多的各种文章来写Java内存布局/Java内存模型(JMM)/Java内存分配和回收 ...
分类:
其他好文 时间:
2017-09-12 01:19:25
阅读次数:
312
1、JVM内存查看与分析,编写内存泄露实例 堆区、栈区、方法区、本机内存都有可能内存溢出。在这里编写堆区内存溢出实例。如下(来自《深入理解Java虚拟机》一书。 编写溢出实例主要知道两点内容: (1)不断创建实例对象,以占满堆空间 (2)保证GC Roots到对象之间有可达路径来避免垃圾回收 最后运 ...
分类:
编程语言 时间:
2017-09-09 22:36:53
阅读次数:
394
笔者最近在学习周志明老师编写的《深入理解Java虚拟机》一书,书中第一章的实战部分就是“自己编译JDK”,不过书中提到的是OpenJDK 7的编译。由于现在Java开发主流的JDK基本都是1.8的版本,所以,笔者就进行了OpenJDK 8的编译。 (本文为博主原创文章,转载请注明出处) 一、环境准备 ...
分类:
系统相关 时间:
2017-09-06 22:12:32
阅读次数:
518
#为了防止自己忘记,先记着,之前我一直以为《深入理解JAVA虚拟机》写错了来着。 在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding)。 也就是说 JAVA对象 = 对象头 + 实例数据 + 对象 ...
分类:
编程语言 时间:
2017-09-04 22:38:41
阅读次数:
498
学了很久的java,是时候来一波深入思考了。比如:对象是如何在JVM中创建,并且被使用的。本文主要讲解下new对象的创建过程。要想更深入的了解建议去认认真真的看几遍《深入理解Java虚拟机》周志明写的。 首先自己想想:Person p = new Person() 这句话是干嘛的?废话,肯定是创建一 ...
分类:
编程语言 时间:
2017-09-03 17:57:19
阅读次数:
237
1. 标记 - 清除算法 先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。它是最基础的收集算法。其他收集算法都是根据其思路,改进其不足之处。 缺点:1) 标记和清除两个阶段的效率都不高;2)清除后会产一大量不连续的内存碎片 2. 复制算法 将可用内存划分为大小相等的两块,每次只使用 ...
分类:
编程语言 时间:
2017-08-30 09:48:48
阅读次数:
131
1.《深入理解 Java 虚拟机:JVM 高级特性与最佳实践》 2.《HotSpot 实战》 3.《Java 并发编程实战》 4.《Java 多线程编程核心技术》 5.《Effective Java 中文版》 6.《深入分析 Java Web 技术内幕》 7.《大型网站技术架构 核心原理与案例分析》 ...
分类:
编程语言 时间:
2017-08-28 19:56:06
阅读次数:
161
根据《深入理解java虚拟机》这本书总结 提到java的并发和锁,第一反应可能回想到多线程、synchronized关键字等,那么对于jvm虚拟机,这些是如何实现的呢?或者用的什么思想实现的? 一、JAVA内存模型 为什么要谈到内存模型?并发编程和锁要解决的问题就是同步的问题,抛开java代码,虚拟 ...
分类:
其他好文 时间:
2017-08-26 15:04:21
阅读次数:
115
一直对String对象里面的intern()方法不是很了解,最近在读《深入理解Java虚拟机》这本书里面终于得到了一个比较清晰的解释。这个方法是可以获得一个具体的String在字符串常量池中的一个引用,书里面有一段实例代码,Stringstr1=newStringBuilder("计算机").append("软件").toSt..
分类:
其他好文 时间:
2017-08-26 04:52:02
阅读次数:
153