1.介绍JVM(Java Virtual Machine,Java虚拟机) 1.介绍JVM(Java Virtual Machine,Java虚拟机) JVM是Java Virtual Machine的缩写,通常成为java虚拟机,作为Java可以进行一次编写,到处执行(Write once, ru ...
分类:
其他好文 时间:
2018-03-11 21:05:56
阅读次数:
154
之前在看深入理解Java虚拟机一书中第一次接触相关名词,但是并不理解,只知道Object obj = new Object()类似这种操作的时候,obj就是强引用。强引用不会被gc回收直到gc roots不可达时。而对其他三个名词并不清楚,因为并没有被真正使用过。通过查看软引用,弱引用和虚引用的源码 ...
分类:
编程语言 时间:
2018-03-11 02:36:58
阅读次数:
232
熟悉java的人都知道jdk的bin目录中有很多小工具,其中就包括用于监视虚拟机和故障处理的工具,今天就来仔细了解下各个工具的用法 jps JVM Process Status Tool,用于显示指定系统的内所有的Hotapot的虚拟机进程 1.用法 2.参数列表 3.实际举例: 1. jps -q ...
分类:
编程语言 时间:
2018-03-09 00:16:31
阅读次数:
244
JVM 分代GC策略分析 我们以Sun HotSpot VM来进行分析,首先应该知道,如果我们没有指定任何GC策略的时候,JVM默认使用的GC策略。Java虚拟机是按照分代的方式来回收垃圾空间,我们应该知道,垃圾回收主要是针对堆(Heap)内存进行分代回收,将对内存可以分成新生代(Young Gen ...
分类:
其他好文 时间:
2018-03-08 18:36:33
阅读次数:
178
1、stackoverflow: 每当java程序启动一个新的线程时,java虚拟机会为他分配一个栈,java栈以帧为单位保持线程运行状态;当线程调用一个方法是,jvm压入一个新的栈帧到这个线程的栈中,只要这个方法还没返回,这个栈帧就存在。 如果方法的嵌套调用层次太多(如递归调用),随着java栈中 ...
分类:
编程语言 时间:
2018-03-08 13:55:32
阅读次数:
133
这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守 Java SE 7 规范的典型的 JVM 核心内部组件。 上图显示的组件分两个章节解释。第一章讨论针对每个线程创建的组件,第二章节讨论了线程无关组件。 线程 JVM 系统线程 每个线程相关的 程序计数器 栈 本地栈 栈限制 栈帧 局 ...
分类:
编程语言 时间:
2018-03-07 16:27:53
阅读次数:
178
JVM运行时数据区域图: 程序计数器 程序计数器(program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。 Java虚拟机栈 虚拟机栈描述 ...
分类:
编程语言 时间:
2018-03-07 14:59:00
阅读次数:
207
Java比起C++一个很大的进步就在于Java不用再手动控制指针的delete与free,统一交由JVM管理,但也正因为如此,一旦出现内存溢出异常,不了解JVM,那么排查问题将会变成一项艰难的工作。 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区。这些区域都有各自 ...
分类:
其他好文 时间:
2018-03-07 10:31:39
阅读次数:
220
堆和非堆内存 按照官方的说法:“Java 虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。 JVM主要管理两种类型的内存:堆和非堆。 Heap me ...
分类:
其他好文 时间:
2018-03-06 23:21:31
阅读次数:
204
1、bulk api奇特的json格式{"action":{"meta"}}\n{"data"}\n{"action":{"meta"}}\n{"data"}\n 2、如果采用比较良好的json数组格式[{ "action":{ "meta" }, "data":{ }}]允许任意的换行,整个可读性 ...