Java 实现一次编译到处运行的基础,来源于 Java 虚拟机屏蔽了操作系统的底层细节。使用 class 文件存储编译后的源程序,使得 Java 程序的编译与操作系统解耦。正是因为 Java class 文件的设计与 Java 语言解耦,分别发布了 Java语言规范和 Java 虚拟机规范,使得其他 ...
分类:
编程语言 时间:
2017-03-28 23:44:53
阅读次数:
253
java内存模型 Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如C/C++等)直接使用物理硬件和操作系统的内存模型,因此,会由于 ...
分类:
编程语言 时间:
2017-03-16 22:05:46
阅读次数:
243
Java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specification.version Java 虚拟机规范版本 java. ...
分类:
其他好文 时间:
2017-03-15 00:09:26
阅读次数:
223
JVM结构、内存分配、垃圾回收算法、垃圾收集器。 一、JVM结构 根据《java虚拟机规范》规定,JVM的基本结构一般如下图所示: 从左图可知,JVM主要包括四个部分: 1.类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中。(右图表示了从java源文件 ...
分类:
其他好文 时间:
2017-02-14 11:58:14
阅读次数:
278
JVM中的异常发生 Java虚拟机规范中除了程序计数器外,其他几个运行时区域都有发生OutOfMemoryError异常的可能。 本章笔记通过代码来验证Java虚拟机规范中描述的各个运行时区域存储的内容、以及在以后遇到实际的内存溢出异常时,能根据异常的信息快速判断是哪个区域出现的内存溢出、怎样的代码 ...
分类:
编程语言 时间:
2017-01-14 21:00:28
阅读次数:
263
JVM性能调优JVM垃圾回收与性能调优总结JVM调优的几种策略一、JVM内存模型及垃圾收集算法1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm)其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内..
分类:
其他好文 时间:
2017-01-09 16:51:46
阅读次数:
182
直接内存 直接内存是一个重要的问题,首先它不是运行数据区的部分也不是java虚拟机规范的一部分,这个的出现主要和java1.4后出现的NIO相关,一个基于通道和缓冲区的io方式,它可以使用Native函数库来直接分配堆外内存,然后通过一个存在java堆中的DirectByteBuffer这个对象来对 ...
分类:
其他好文 时间:
2016-12-24 14:10:03
阅读次数:
194
点击进入_更多_Java千百问1、jvm实例的结构是什么样的在Java虚拟机规范中,一个虚拟机实例的行为主要组成部分为:子系统、内存区域、数据类型和指令。
这些组件描述了JVM内部的一个抽象结构。与...
分类:
编程语言 时间:
2016-11-20 09:12:01
阅读次数:
217
本文内容的目的有两个:第一,通过代码验证Java虚拟机规范中描述的各个运行时区域存储的内容;第二,在工作中遇到实际的内存溢出异常时,能根据异常的信息快速判断是哪个区域的内存溢出,知道什么样的代码可能会导致这些区域内存溢出,以及出现这些异常后该如何处理。 Java堆溢出 Java堆用于存储对象实例,只 ...
分类:
其他好文 时间:
2016-11-11 14:06:48
阅读次数:
285
1、运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间: 有的区域随着虚拟机进程的启动而存在 有些区域则依赖用户线程的启动和结束而建立和销毁 根据《Java虚拟机规范(Java SE 7版)》的规定,Ja ...
分类:
编程语言 时间:
2016-10-22 18:03:00
阅读次数:
203