Java发展至今,出现了很多Java虚拟机,从最初的Classic的Java虚拟机到Exact VM虚拟机,到现在最终被大规模部署和应用的是Hotspot虚拟机。 整数在Java虚拟机中的表示 在Java虚拟机中,整数有byte、short、int、long四种,分别表示8位、16位、32位、64位 ...
分类:
编程语言 时间:
2018-10-01 23:15:47
阅读次数:
180
前言 对于 JVM 运行时区域有了一定了解以后,本文将更进一步介绍虚拟机内存中的数据的细节信息。以JVM虚拟机(Hotspot)的内存区域Java堆为例,探讨Java堆是如何创建对象、如何布局对象以及如何访问对象的。 正文 (一). 对象的创建 说到对象的创建,首先让我们看看 Java 中提供的几种 ...
分类:
其他好文 时间:
2018-09-24 13:48:36
阅读次数:
134
本地方法栈主要是来处理native的方法的,我们来看一下什么是native的方法。 Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java 程序的功能。 其实在java中我们通用的虚拟机HotSpot中,本地方法栈和虚拟机栈是同一块区域在这里讲的一般是通用... ...
分类:
其他好文 时间:
2018-09-22 21:56:17
阅读次数:
192
GC,即就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。与C++不同的是,Java采用的是类似于树形结构的可达性分析法来判断对象是否还存在引用。即:从gcroot开始,把所有可以搜索得到的对象标记为存活对象。 GC机制 要准确理解Java的垃圾回收机制,就要从:“什 ...
分类:
其他好文 时间:
2018-09-21 10:47:23
阅读次数:
195
在 java.util.concurrent 包中的 ExecutorService 的实现就是壹個线程池的实现 任务的委托(Task Delegation) 壹旦线程把任务委托给 ExecutorService,该线程就会继续执行与运行任务无关的其它任务。 Executor框架的两级调度模型 在H ...
分类:
编程语言 时间:
2018-09-14 18:28:01
阅读次数:
166
一、安装java jdk1.8 1.添加软件源 2.更新软件源 3.安装jdk1.8 安装器会提示你同意 oracle 的服务条款,选择 ok 然后选择yes 即可 二、查看java的安装路径 三、查看java版本 ps:更新 jdk1.7 到 jdk1.8 直接执行安装第一步覆盖就ok. 四、增加 ...
分类:
编程语言 时间:
2018-09-13 17:29:11
阅读次数:
191
一次偶然,博主在浏览docs.oracle.com/javase的时候发现了《Hotspot虚拟机垃圾收集调优指南》这篇文档。内心百感交集,之前在看完了周志明的《深入理解Java虚拟机 JVM高级特性与最佳实践(第二版)》也有比较长篇的学习记录博客发表。不过那也是基于JDK7进行编写的。后续的8、9 ...
分类:
其他好文 时间:
2018-09-11 18:42:06
阅读次数:
185
本文来自网易云社区 作者:吕宗胜 Java语言与C语言相比,最大的特点是编程人员无需过多的关心Java的内存分配和回收,因为所有这一切,Java的虚拟机都帮我们实现了。JVM的内存管理,大大降低了开发人员对内存管理的要求,也不容易出现C语言中的内存泄漏和溢出。但一旦应用内存发生问题,也会导致程序员难 ...
分类:
其他好文 时间:
2018-09-11 11:16:16
阅读次数:
112
哪些内存需要回收? java内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不絮的执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的。因此这几个区域的内存分配和回收都具有确定性,所以这部分 ...
分类:
编程语言 时间:
2018-09-03 12:12:21
阅读次数:
184
Java classes在Java hotspot VM内部表示为类元数据。 在之前Java hotspot VM版本,类元数据在持久代中分配。 在JDK8,持久代被移除,并且类元数据在本地内存中分配。 默认情况下,本地内存都可以被用于类元数据。 可以使用MaxMetaspaceSize 选项设置在 ...
分类:
Web程序 时间:
2018-09-02 20:10:54
阅读次数:
160