深入理解Java虚拟机
JNSimba
腹有诗书气自华,快叫我长胖一点吧~~~~~
展开
-
深入解析String#intern
转自:http://tech.meituan.com/in_depth_understanding_string_intern.html#-jdk6-jdk7-intern-引言在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供转载 2015-07-27 20:59:03 · 1296 阅读 · 0 评论 -
浅析Java内存模型
概述Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量是线程共享的,存在竞争问题的。Java内存模型规定了所有的变量都存储在主内存,每条线程还有自己的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等),都必须在工作内存中进行,而不能直接读写主内存中的变量。原创 2015-08-18 09:30:32 · 5287 阅读 · 37 评论 -
垃圾回收机制与内存分配策略
我们经常说的垃圾收集(Grabage Collection,GC)需要确定以下三个事情:哪些内存需要回收?什么时候回收?如何回收?在这三件事情之前,我们先看看为什么要进行垃圾收集? 因为程序中存在的实例对象,变量等信息如果不进行垃圾回收的话,随着程序的运行,必然会带来程序性能的下降,造成卡、慢甚至系统异常。哪些内存需要回收?前面我们说到了程序计数器、虚拟机栈、本地方法栈三个区域是线程隔离原创 2015-08-06 00:26:49 · 2035 阅读 · 0 评论 -
类加载机制及双亲委派
所谓的无关性: 我们一直在强调Java的平台无关性,所谓的一次编写,到处运行。 那么究竟是什么造就了这种平台无关性,那就是Class文件,我们注意到编译完java文件后,会产生一个Class文件,而这些Class文件在各种虚拟机中的有相同的存储格式—–字节码。 除了平台无关性,Java语言还引申出来一个语言无关性。也就是说Java虚拟机是与Class这种特定格式的文件格式关联,所以就说明无论哪原创 2015-08-06 00:36:31 · 4746 阅读 · 2 评论 -
Java虚拟机结构及常见内存溢出异常
每个Java虚拟机都有一个类加载器子系统,根据某个全限定名来装入类型,同样每个Java虚拟机都有一个执行引擎,它负责执行那些包含在被装载类的方法中的指令。 当虚拟机运行一个程序时,就需要从已加载的文件中得到信息,将这些信息组织到运行时数据区,以便于管理。Java运行时的数据区域划分 1、程序计数器:程序计数器是一块较小的内存空间,可以看做是当前线程的字节码的行号指示器。 Java虚拟机的多线程原创 2015-08-05 23:56:05 · 1286 阅读 · 0 评论