深入理解Java虚拟机
liyf155
这个作者很懒,什么都没留下…
展开
-
一、JVM内存结构
一、JVM内存结构Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。首先来看一下两张图,分别是JVM内存结构图和运行时数据区域:JVM内存结构图: JVM运行时数据区域图: 注意:以下大部分内容摘自《深入理解Jav原创 2017-03-08 23:31:24 · 2408 阅读 · 0 评论 -
二、垃圾收集器与内存分配策略
二、垃圾收集器与内存分配策略虽然Java在实际开发中,不用像C++那样在代码中指明内存的回收,但是我们必须知晓其垃圾回收的机制以及内存分配的原理,因为当我们需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,就需要对这些技术实施必要的监控和调节。垃圾收集器(Garbage Collection,GC),诞生于1960年的MIT的Lisp语言(一门真正使用内存动态分配和垃圾原创 2017-03-11 15:51:04 · 280 阅读 · 0 评论 -
三、Java类加载器
三、Java类加载器当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构: Bootstrap classloader -引导(也称为原始)类加载器,引导类加载器主要负责加载Java的核心类。在Sun的JVM中,在执行java的命令中使用-Xbootclasspath选项或使用 -D选项指定sun.boot.class.path系统属性值可以指定附加的类。这个加载器的是原创 2017-03-12 11:30:42 · 439 阅读 · 0 评论 -
四、Java类加载过程
1. 类的加载类的加载是指将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区内的方法去内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生原创 2017-03-12 11:32:34 · 423 阅读 · 0 评论 -
六、JVM参数详解
在对应用程序进行调优的时候,我们经常会去设置JVM参数,以优化后台服务器的系统性能。实际上不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,所以选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。JVM参数解析 参数名称 含 义 默认值 说明 -Xms 初始堆大小 物原创 2017-03-30 23:13:33 · 395 阅读 · 0 评论 -
Error attaching to core file: Can't attach to the core file 错误
Error attaching to core file: Can’t attach to the core file 错误在使用jmap、jstack、jinfo指令时,可能会碰到“Error attaching to core file: Can’t attach to the core file”错误,实际上这个错误很简单,JVM要求你必须使用对应JDK版本jmap、jstack指令来执行。原创 2017-03-24 10:56:55 · 16319 阅读 · 1 评论 -
五、JVM调优指令
五、JVM调优指令一般应用程序都部署在Linux服务器上,当然我们可以使用界面化的调优工具例如jconsole、VisualVM等进行远程连接来进行监控和性能分析,但归根结底,工具只是将指令执行的结果进行友好的展示而已,而且工具的使用终究还是有各种限制,所以我们必须掌握JVM的调优指令。JVM的调优指令在安装JDK的bin目录下,如图:这里主要介绍jps/jstat/jmap/jstack/jinf原创 2017-03-24 12:26:56 · 692 阅读 · 0 评论