Java虚拟机数据运行时区域 方法区(Method Area) 存储加载的类信息,常量,静态变量,编译器编译后的代码等数据。虽然JVM规范把方法区描述为堆的一个逻辑部分,但它却有一个别名叫做Non-Heap。Class文件中除了有类的版本,字段,方法,接口等描述信息外,还有一项是常量池,用于存放编译 ...
分类:
编程语言 时间:
2017-11-27 00:01:31
阅读次数:
213
考虑写性能优化系列,主要是因为之前看到了太多性能其烂无比的 Java 代码(有些代码看得俺口瞪目呆)。很多 Java 程序员在写程序时,由于不太了解 JVM 及语言本身的一些运作机制,从而导致了代码的性能出现【严重】问题(性能差一个数量级以上,我才称为“严重”)。 虽然网上也有针对 Java 性能的 ...
分类:
编程语言 时间:
2017-11-25 20:46:22
阅读次数:
285
类的生命周期类的生命周期从被加载到虚拟机内存开始,到卸载出内存为止,包括:加载、验证、准备、解析、初始化、使用、卸载7个阶段。其中验证、准备、解析3个部分统称为连接。发生顺序如下图:加载、验证、准备、初始化和卸载这个5个阶段是顺序开始的,解析阶段在某些情况下可以在初始化阶段之后再开始,这是为了支持j ...
分类:
编程语言 时间:
2017-11-25 14:22:22
阅读次数:
132
此系列为深入java虚拟机(周志明著)学习笔记 ...
分类:
编程语言 时间:
2017-11-24 19:02:01
阅读次数:
139
Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在。灵活掌握Java反射机制,对大家以后学习框架技术有很大的帮助。 那么什么是Java的反射呢? 大家都知道,要让Java程序能够运行,那么就得让Java类要被Java虚拟机加载。Java类如果不被Java虚拟机加载,是不能正常运行 ...
分类:
其他好文 时间:
2017-11-22 19:57:56
阅读次数:
142
一. 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域. Java虚拟机所管理的内存将会包括以下几个运行时数据区域: 1. 程序计数器 1)程序计数器(Program CounterRegister) 是一块较小的内存空间,它的作用可以看做是当前线 ...
分类:
编程语言 时间:
2017-11-21 17:00:02
阅读次数:
192
【正文】 声明:本文只是做一个总结,有关jvm的详细知识可以参考本人之前的系列文章,尤其是那篇:Java虚拟机详解04 GC算法和种类。那篇文章和本文是面试时的重点。 面试必问关键词:JVM垃圾回收、类加载机制。 先把本文的目录画一个思维导图:(图的源文件在本文末尾) 一、Java引用的四种状态: ...
分类:
编程语言 时间:
2017-11-21 01:00:37
阅读次数:
301
static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。 1、static变量 按照是否静态 ...
分类:
编程语言 时间:
2017-11-19 01:55:15
阅读次数:
176
虚拟化本质上是软/硬件层的抽象 说起虚拟化,相信大家应该都不陌生,像虚拟内存、Java 虚拟机、Android 模拟器这些都是虚拟化技术的体现,为什么这样说,这个就要回到虚拟化技术的本质上—— 虚拟化就是由位于下层的软件模块,根据上层的软件模块的期待,抽象(虚拟)出一个虚拟的软件或硬件模块,使上一层 ...
分类:
其他好文 时间:
2017-11-18 23:39:00
阅读次数:
210
运行eclipse项目出现以下错误: 简单来讲就是端口号被占用! 解决: 1.如果没有stop项目,eclipse仍在运行,请停止项目,再运行(不行的话,看下一步) 2.由于进程里javaw.exe有好几个,一个是myeclipse,还有一个是java虚拟机的,最后一个就是tomcat的进程,有时候 ...
分类:
其他好文 时间:
2017-11-18 20:56:30
阅读次数:
175