虚拟机Class文件结构笔记
摘要:1.Java语言的平台无关性 Java是与平台无关的语言,“一次编写,到处运行”,这一方面依赖于Java源代码编译后生成的存储字节码的文件,即Class文件是语言和平台无关的; 另一方面依赖于Java虚拟机的实现。 Java虚拟机并不关心Class的来源是什么语言,只要它符合一定的结构,就可以在Ja
阅读全文
posted @
2017-06-16 16:49
xijin_wu
阅读(221)
推荐(0) 编辑
JVM内存区域与内存溢出异常
摘要:Java虚拟机在执行java程序时会把它所管理的内存会分为若干个不同的数据区域,不同的区域在内存不足时会抛出不同的异常。 一、运行时数据区域的划分 (1)程序计数器程序计数器(Program Counter Register)是一块比较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器;P
阅读全文
posted @
2017-06-16 16:34
xijin_wu
阅读(502)
推荐(0) 编辑
深入学习虚拟机类加载过程
摘要:JVM的类加载机制是指虚拟机 把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的实现过程。 类加载过程具体可以分成下面几个步骤: (1)装载:查找和导入Class文件; (2)链接:把类的二进制数据合并到JRE中; 校验:检查载
阅读全文
posted @
2017-06-16 16:17
xijin_wu
阅读(208)
推荐(0) 编辑
虚拟机常用的内存查看与分析工具
摘要:内存查看与分析工具,下面是日常监控可以使用的一些工具, 在调试时应用比较多的是堆栈信息,查看这篇文章: Java Thread Dump 性能分析 gc日志输出 在jvm启动参数中加入 1 2 3 4 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTime
阅读全文
posted @
2017-06-16 15:40
xijin_wu
阅读(7663)
推荐(0) 编辑
对Java内存模型即JMM的理解
摘要:类似物理上的计算机系统,Java虚拟机规范中也定义了一种Java内存模型,即Java Memory Model(JMM),来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果。 现在最新的Java内存模型规范是JSR-133,即Java内存模型与线程规范,
阅读全文
posted @
2017-06-15 14:51
xijin_wu
阅读(269)
推荐(0) 编辑
Java内存泄露的理解与解决
摘要:依赖于引用判断的内存管理机制 Java中对内存对象的访问,使用的是引用的方式。在Java代码中我们维护一个内存对象的引用变量,通过这个引用变量的值,我们可以访问到对应的内存地址中的内存对象空间。在Java程序中,这个引用变量本身既可以存放堆内存中,又可以放在代码栈的内存中(与基本数据类型相同)。GC
阅读全文
posted @
2017-06-14 13:52
xijin_wu
阅读(276)
推荐(0) 编辑
JVM的内存分配与垃圾回收策略
摘要:自动内存管理机制主要解决了两个问题:给对象分配内存以及回收分配给对象的内存。 >>垃圾回收的区域 前面的笔记中整理过虚拟机运行数据区,再看一下这个区域: 注意在这个Runtime Data Area中: 程序计数器、Java栈、本地方法栈3个区域随线程而生,随线程而灭;每一个栈帧中分配多少内存基本上
阅读全文
posted @
2017-06-12 14:32
xijin_wu
阅读(229)
推荐(0) 编辑
volatile关键字与线程间通信
摘要:1.Java内存模型 现在计算机普遍使用多处理器进行运算,并且为了解决计算机存储设备和处理器的运算速度之间巨大的差距,引入了高速缓存作为缓冲,缓存虽然能极大的提高性能,但是随之带来的缓存一致性的问题,例如,当多个处理器同时操作同一个内存地址,可能会导致各自的缓存数据不一致,由此产生冲突问题,内存模型
阅读全文
posted @
2017-06-09 15:19
xijin_wu
阅读(294)
推荐(0) 编辑
理解Java中的引用传递和值传递
摘要:关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题,有论坛说Java中只有值传递,也有些地方说引用传递和值传递都存在,比较容易让人迷惑。关于值传递和引用传递其实需要分情况看待,今天学习和分析一下,着急可以先看最后的结论。 1.基本类型和引用类型在内存中的保存 Java中数据类型分为两
阅读全文
posted @
2017-06-09 14:01
xijin_wu
阅读(232)
推荐(0) 编辑