随笔分类 -  JVM虚拟机

上一页 1 2 3 下一页
JVM参数(三)打印所有XX参数及值
摘要:本篇文章基于Java 6(update 21oder 21之后)版本, HotSpot JVM 提供给了两个新的参数,在JVM启动后,在命令行中可以输出所有XX参数和值。 -XX:+PrintFlagsFinal and -XX:+PrintFlagsInitial 让我们现在就了解一下新参数的输出 阅读全文
posted @ 2016-11-24 18:14 duanxz 阅读(5860) 评论(0) 推荐(0)
JVM参数(一)JVM类型以及编译器模式
摘要:现在的JVM运行Java程序(和其它的兼容性语言)时在高效性和稳定性方面做的非常出色。自适应内存管理、垃圾收集、及时编译、动态类加载、锁优化——这里仅仅列举了某些场景下会发生的神奇的事情,但他们几乎不会直接与普通的程序员相关。在运行时,JVM会不断的计算并优化应用或者应用的某些部分。 虽然有了这种程 阅读全文
posted @ 2016-11-24 18:13 duanxz 阅读(1565) 评论(0) 推荐(0)
JVM内存模型
摘要:一、为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话, 阅读全文
posted @ 2016-11-18 10:29 duanxz 阅读(5740) 评论(5) 推荐(7)
mat(Eclipse Memory Analyzer tool)之二--heap dump分析
摘要:在工作中可能会遇到内存溢出这种灾难性的问题,那么程序肯定是存在问题,找出问题至关重要,上一篇文章讲了jmap命令的使用方法,当然用jmap导出的文件我们也看不懂啊,那就交给memory analyzer(mat)这个工具,让他帮助我们来观察程序的内存分布情况吧。 MAT 不是一个万能工具,它并不能处 阅读全文
posted @ 2016-11-09 10:42 duanxz 阅读(10573) 评论(0) 推荐(2)
java对象在内存中的结构(HotSpot虚拟机)
摘要:一、对象的内存布局 HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 32位: 64位: 从上面的这张图里面可以看出,对象在内存中的结构主要包含以下几个部分: 对象头: Mark Word(标 阅读全文
posted @ 2015-11-15 18:45 duanxz 阅读(19984) 评论(7) 推荐(7)
优化Java堆大小的5个技巧
摘要:本文作者Pierre是一名有10多年经验的高级系统架构师,他的主要专业领域是Java EE、中间件和JVM技术。根据他多年的工作实践经验,他发现许多性能问题都是由Java堆容量不足和调优引起的。下面他将和大家分享非常实用的5个Java堆优化技巧。1.JVM:对难以理解的东西产生恐惧感千万不要以为,通... 阅读全文
posted @ 2015-11-15 17:57 duanxz 阅读(1032) 评论(0) 推荐(0)
Java中的OutOfMemoryError的各种情况及解决和JVM内存结构
摘要:在JVM中内存一共有3种:Heap(堆内存),Non-Heap(非堆内存) [3]和Native(本地内存)。 [1] 堆内存是运行时分配所有类实例和数组的一块内存区域。非堆内存包含方法区和JVM内部处理或优化所需的内存,存放有类结构(如运行时常量池、字段及方法结构,以及方法和构造函数代码)。本地内 阅读全文
posted @ 2015-10-22 16:22 duanxz 阅读(15531) 评论(0) 推荐(4)
Java内存泄露的理解与解决
摘要:Java内存管理机制 在C++语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露。Java语言对内存管理做了自己的优化,这就是垃圾回收机制。Java的几 阅读全文
posted @ 2015-10-19 22:05 duanxz 阅读(676) 评论(0) 推荐(0)
JVM参数之-XX:+HeapDumpOnOutOfMemoryError(导出内存溢出的堆信息(hprof文件))
摘要:当出现HeapDumpOnOutOfMemoryError错误时,我们需要分析原因,下面的程序就是模拟这个错误并导出dump文件,好让你分析 GcTest.java 这个文件在桌面上,所以执行编译: 执行 GcTest.bat: 结果如下: gc.hprof文件用内存分析工具分析如mat打开 分析 阅读全文
posted @ 2015-10-18 22:02 duanxz 阅读(32967) 评论(0) 推荐(1)
jvm调优之四:生产环境参数实例及分析【生产环境实例增加中】
摘要:java application项目(非web项目) 改进前: -Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=78-XX:ThreadS 阅读全文
posted @ 2015-10-18 22:01 duanxz 阅读(2386) 评论(0) 推荐(0)
Synchronized之二:synchronized的实现原理
摘要:Java提供了synchronized关键字来支持内在锁。Synchronized关键字可以放在方法的前面、对象的前面、类的前面。 当线程调用同步方法时,它自动获得这个方法所在对象的内在锁,并且方法返回时释放锁,如果发生未捕获的异常,也会释放锁。当调用静态同步方法时,因为静态方法和类相关联,线程获得 阅读全文
posted @ 2015-08-20 17:32 duanxz 阅读(1343) 评论(0) 推荐(0)
对象的强、软、弱和虚引用
摘要:本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。 1.对象的强、软、弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为 阅读全文
posted @ 2015-04-18 18:38 duanxz 阅读(819) 评论(0) 推荐(1)
JVM的启动流程
摘要:JVM工作原理和特点主要是指操作系统装入JVM,是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例 4.调用JNIEnv实例装载并处理class类。 一.JVM 阅读全文
posted @ 2014-05-16 16:50 duanxz 阅读(1003) 评论(0) 推荐(0)
JVM体系结构之一:总体介绍
摘要:一、Java的内存区域划分 Java 虚拟机在执行Java程序的时候会把它管理的内存区域划为几部分,这一节我们就来解析一下Java的内存区域。 Java的内存区域主要分为五部分: 程序计数器(PC) Java 虚拟机栈(JVM Stack) 本地方法栈(Native Method Stack) Ja 阅读全文
posted @ 2014-05-16 16:34 duanxz 阅读(2617) 评论(0) 推荐(0)
JVM体系结构之二:类加载器
摘要:一.概述 定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。类加载和连接的过程都是在运行期间完成的。 二. 类的加载方式 1):本地编译好的class中直接加载 2):网络加载:java.net.URLClassLo 阅读全文
posted @ 2014-05-14 21:46 duanxz 阅读(991) 评论(0) 推荐(0)
JVM体系结构之二:类加载器之2:JVM 自定义的类加载器的实现和使用
摘要:一、回顾一下jdk自带的类加载器: 1.java虚拟机自带的加载器 根类加载器(Bootstrap,c++实现) 扩展类加载器(Extension,java实现) 应用类加载器(App,java实现) 2.用户自定义的类加载器 java.lang.ClassLoader的子类 用户可以定制类的加载方 阅读全文
posted @ 2014-05-14 21:45 duanxz 阅读(1128) 评论(0) 推荐(0)
方法区之1:方法区介绍
摘要:一、简介 方法区在JVM中也是一个非常重要的区域,它与堆一样,是被线程共享的区域。在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。 方法区(method area)只是JVM规范中定义的一个概念,用于存储类信息、常量池、静态变量、JIT编译 阅读全文
posted @ 2014-05-14 21:41 duanxz 阅读(17664) 评论(1) 推荐(2)
方法区之2:jdk1.6,jdk1.7,jdk1.8下的方法区变迁
摘要:在JDK1.7及以前,HotSpot虚拟机将java类信息、常量池、静态变量、即时编译器编译后的代码等数据,存储在Perm(永久带)里(对于其他虚拟机如BEA JRockit、IBM J9等是不存在永久带概念的),类的元数据和静态变量在类加载的时候被分配到Perm里,当常量池回收或者类被卸载的时候, 阅读全文
posted @ 2014-05-14 21:28 duanxz 阅读(4695) 评论(0) 推荐(0)
JVM体系结构之五:本地方法栈
摘要:对于一个运行中的Java程序而言,它还可能会用到一些跟本地方法相关的数据区。当某个线程调用一个本地方法时,它就进入了一个全新的并且不再受虚拟机限制的世界。本地方法可以通过本地方法接口来访问虚拟机的运行时数据区,但不止如此,它还可以做任何它想做的事情。 本地方法本质上时依赖于实现的,虚拟机实现的设计者 阅读全文
posted @ 2014-05-14 21:27 duanxz 阅读(451) 评论(0) 推荐(0)
JVM体系结构之六:堆Heap之1
摘要:一、简介 对于大多数应用来说,Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。 Java把内存分成两种:栈内存和堆内存。关于堆内存和 阅读全文
posted @ 2014-05-14 21:27 duanxz 阅读(530) 评论(0) 推荐(0)

上一页 1 2 3 下一页