zhulibin2012

随笔分类 -  java虚拟机

1

深入理解java虚拟机---Class文件(二十)
摘要:无符号数、表 当实现了不同语言的编译器,比如jython,jruby等等,那么就可以利用这些语言编写代码,通过各自的编译器编译成符合jvm规范的字节码文件,就可以利用jvm来执行了。 Class文件在Java体系结构中的位置和作用 在上一篇博客中, 大致讲解了Java虚拟机的体系结构和执行原理。 本 阅读全文

posted @ 2018-05-06 16:47 zhulibin2012 阅读(480) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---虚拟机工具VisualVM(十九)
摘要:性能分析神器VisualVM 9602 VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 阅读全文

posted @ 2018-05-06 10:54 zhulibin2012 阅读(498) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---虚拟机工具jconsole(十八)
摘要:Jconsole,Java Monitoring and Management Console。Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。 阅读全文

posted @ 2018-05-06 10:26 zhulibin2012 阅读(567) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---虚拟机工具jstat(十七)
摘要:jstack 没什么用 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线 阅读全文

posted @ 2018-05-06 09:46 zhulibin2012 阅读(211) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---虚拟机工具jhat(十六)
摘要:jhat JVM Heap Analysis Tool命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在浏览器中查看。在此要注意,一般不会直接在服务器上进行分析,因为jhat是一个耗时并且耗费硬件资源的过程,一 阅读全文

posted @ 2018-05-06 09:38 zhulibin2012 阅读(157) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---虚拟机工具jmap(十六)
摘要:原文: https://www.cnblogs.com/myna/p/7573843.html jmap JVM Memory Map命令用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候自动生成 阅读全文

posted @ 2018-05-06 09:32 zhulibin2012 阅读(145) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---虚拟机工具jinfo(十五)
摘要:作用: 实时查看和调整虚拟机参数. jinfo 是jdk自带的一个工具,它可以用来查看正在运行的java应用程序的扩展参数(JVM中-X标示的参数);甚至支持在运行时修改部分参数。 1、通过以下的命令你便能看到JVM中哪些flag可以被jinfo动态修改: [html] view plain cop 阅读全文

posted @ 2018-05-06 09:20 zhulibin2012 阅读(163) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)(十二)
摘要:引用:https://www.cnblogs.com/yulei126/p/6777323.html JDK8-废弃永久代(PermGen)迎来元空间(Metaspace) 1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace) 4.总结 正文分割线 一、背景 1 阅读全文

posted @ 2018-05-05 11:28 zhulibin2012 阅读(247) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---内存分配策略(十三)
摘要:转载请注明原文地址:https://blog.csdn.net/initphp/article/details/30487407 Java内存分配策略 使用的ParNew+Serial Old收集器组合 1. 优先在Eden上分配。 Java的对象优先会在新生代的Eden上分配。 我们可以看一个例子 阅读全文

posted @ 2018-05-05 11:01 zhulibin2012 阅读(149) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---垃圾回收(十一)
摘要:1、垃圾回收要解决的问题 可以通过配置虚拟机参数来打印出内存日志: -verbose:gc -XX:+PrintGCDetails 垃圾收集(Garbage Collection,GC),要设计一个GC,需要考虑解决下面三件事情: (1)哪些内存需要回收? (2)什么时候回收? (3)如何回收? 哪 阅读全文

posted @ 2018-05-04 07:36 zhulibin2012 阅读(103) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---对象的访问定位(十)
摘要:引用其他人的文章: https://www.cnblogs.com/YYfish/p/6722258.html 那是怎么访问对象呢? java 程序是通过栈上的reference数据来操作堆上的具体对象的。 首先我们回顾一下虚拟机栈: 虚拟机栈是 java方法执行的内存模型:每个方法在执行的同时都会 阅读全文

posted @ 2018-05-04 07:35 zhulibin2012 阅读(117) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---对象的结构(九)
摘要:注意: 我们可以看到的就是InstanceData的数据. 先转载一篇文章作为开头,因为讲的非常详细,我就简单加工下放到这里: 对象结构 在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。下图 阅读全文

posted @ 2018-05-03 23:36 zhulibin2012 阅读(172) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---对象的创建过程(八)
摘要:1.对象的创建过程 由于类的加载是一个很复杂的过程,所以这里暂时略过,后面会详细讲解,默认为是已加载过的类.着重强调对象的创建过程. 注意: 最后一步的init方法是代码块和构造方法. 以上是总图,下面分步骤详细讲解 A: 虚拟机为对象分配内存方式 1. 指针碰撞: 堆内存规整时,这时就可以把其看做 阅读全文

posted @ 2018-05-03 23:12 zhulibin2012 阅读(413) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---java虚拟机内存管理(七)
摘要:本地方法栈、java堆、方法区 本地方法栈在HotSpot版本内与java虚拟机栈是合二为一的.不单独区分本地方法栈.但是java虚拟机中是有这样一块区域的. 作用: 1.本地方法栈为虚拟机栈执行java方法服务 2.本地方法栈为虚拟机栈执行navtive方法服务 java堆 java堆是线程共享区 阅读全文

posted @ 2018-05-03 06:08 zhulibin2012 阅读(160) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---java虚拟机内存管理(六)
摘要:java虚拟机栈的理解 虚拟机栈就是我们所熟知的栈内存,栈内存属于线程独有的.而在栈内存中的局部变量表中存储的引用类型只是存储对象的内存地址.对象的创建在堆内存中,即对象在线程共享区中. 局部变量表: 局部变量表的内存空间在编译时期完成分配,用于存放编译期间可知的各种基本数据类型,引用类型以及ret 阅读全文

posted @ 2018-05-02 23:57 zhulibin2012 阅读(113) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---java虚拟机内存管理(五)
摘要:1.深入理解java虚拟机 总图: 1.线程共享区: 2.线程独占区: 1.程序计数器 理解为当前线程锁执行的字节码的行号指示器,程序计数器没有内存异常错误. 阅读全文

posted @ 2018-05-02 07:20 zhulibin2012 阅读(110) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---java虚拟机的发展史(四)
摘要:1.java虚拟机 A:java虚拟机有很多个版本,但是我们经常使用的是sun公司的HotSpot,可以通过以下命令获取java虚拟机版本 B:JAVA虚拟机分类: 1.Sun Class VM 2. Exact VM 只是在jdk1.2中Solaris使用,在windows和linux中未被使用 阅读全文

posted @ 2018-05-02 07:06 zhulibin2012 阅读(629) 评论(0) 推荐(0) 编辑

深入理解java虚拟机---lanmbda表达式简介(三)
摘要:1.lanmbda表达式使用 lanbmda表达式的作用: A: 取代内部类 B;增加对集合的操作,从而增强其性能 阅读全文

posted @ 2018-05-02 06:34 zhulibin2012 阅读(257) 评论(0) 推荐(0) 编辑

深入理解java虚拟机----java技术体系(一)
摘要:1.java技术体系 举例: class文件格式:如下图所示,java源代码可以根据不同的编译器可以编译成不同的代码.即可以自定义语言规范比如beanshell,并编写代码; 然后自己编写java编译器将其源代码编译成class文件,从而在java虚拟机中运行.即可以解释java支持脚本语言的原因 阅读全文

posted @ 2018-05-02 06:21 zhulibin2012 阅读(146) 评论(0) 推荐(0) 编辑

eclipse配置和使用memory Analyse分析内存
摘要:1. 安装 在Eclipse help -> Eclipse Marketplace下搜索Memory: 图 1-1 搜索MAT插件 按照步骤安装完成重启即可。 2. 测试代码准备 测试代码 3. Eclipse中的运行参数设置 图2-1 eclipse运行参数设置 4.运行测试代码 通过上述可以看 阅读全文

posted @ 2018-04-25 05:51 zhulibin2012 阅读(894) 评论(0) 推荐(0) 编辑

1

导航