Java ClassLoader原理分析

一、JDK默认提供的三个ClassLoader JDK 默认提供了如下几种ClassLoader 1. Bootstrp loader Bootstrp加载器是用C++语言写的,它是在Java虚拟机启动后初始化的,它主要负责加载%JAVA_HOME%/jre/lib,-Xbootclasspath参数指定的路径以及%JAVA_HOME%/jre/classes中的类。 2. ExtClassLoader   Bootstrp loader加载ExtClassLoader,并且将ExtClassLoader的父加载器设置为Bootstrp loader.ExtClassLoader是…

Java的类加载机制

JVM 发表评论
Java类加载机制 1.概述 ​ Class文件由类加载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 ​ 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机…

触摸java常量池

JVM 发表评论
http://www.cnblogs.com/iyangyuan/p/4631696.html 理论            小菜先拙劣的表达一下jvm虚拟内存分布:        程序计数器是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。      本地方法栈是jvm调用操作系统方法所使用的栈。      虚拟机栈是jvm执行java代码所使用的栈。      方法区存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中的存放位置。      虚拟…

JVM学习–垃圾收集算法

JVM 发表评论
JVM学习–总索引 文章目录JVM学习--垃圾收集算法标记-清除算法复制算法标记-整理算法分代收集算法。 JVM学习–垃圾收集算法 本文主要介绍几种常用算法的思想,包括标记-清除算法,标记-整理算法,复制算法,分代收集算法。 标记-清除算法 步骤: 1.如上面的示意图所示,在垃圾回收前,先将内存中标记哪些对象可以被回收。 2.回收那些被标记的对象 存在的问题: 1.标记和回收过程的效率都不高。 2.由于…

JVM内核—JVM调优

JVM 发表评论
目录: 1.常用JVM调优参数 2. GC日志 3.常用JVM调优工具         3.1 JConsole         3.2 JVisualVM         3.3 JStat         3.4 JMap 4.通过Thread Dump诊断JVM性能 1.常用JVM调优参数 -XX:+PrintGCDetails  打印详细垃圾回收信息-Xms  为Heap区域的初始值-Xmx  为Heap区域的最大值,线上环境需要与-Xmx设置为一致,以免JVM堆内存使用达到Xmx值,并且进行垃圾回收后,会收缩堆大小至Xms值-Xss(…

JVM Optimize (jvm 性能调优)

JVM , 发表评论
原文连接:http://blog.sina.com.cn/s/blog_7b6fc4c901016uzz.html 1.堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。 典型设置: 1.java -Xmx3550m -Xms355…

一个内存报警问题总结

JVM , 发表评论
查看当时的FULL GC从图上面看已经很频繁 打印dump文件 执行命令:jmap -dump:format=b,file=/export/Logs/anycall.jd.local/HeapDump.bin  然后通过Eclipse Memory Analyzer查看,如下图,2.9G 占据了大部分,我们最主要的是看到底哪些类撑爆了内存, 继续往下走,查看dominator_tree,如下图:可以看到蓝色阴影部分,是在errror日志打印的时候输出的内容。 这部分问什么会造成内存回收的问题呢,看…

【JVM】JVM调优

JVM 发表评论
待整理 http://www.importnew.com/?s=JVM调优总结 首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM。 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数,过多的GC和Full GC是会占…

Tomcat设定运行jvm的编码

JVM 发表评论
查看jvm编码 可以通过代码确认当前jvm运行的编码 System.getProperty("file.encoding")11 此参数是在jvm启动的时候就已经设置完成。如果没有手动设置file.encoding,会根据当前系统的编码指定。  如果在Windows下,file.encoding=”GBK”,  如果在Linux下,file.encoding=”UTF-8”。 注意:在Tomcat启动完成后,在程序中通过设置system property的方式是没有效果的,原因是jvm启动时读取file.encoding并…

jvm命令行执行和可视化工具

JVM 发表评论
命令行: jps -l 查找jvm进程 jmap -dump:format=b,file=d:\dump.bin 15296 生成dump 文件(15296为1中找出的进程号) jhat d:\dump.bin 分析dump文件 执行上面命令,浏览器中http://localhost:7000/ jstack:堆栈工具,生成jvm当前时刻的线程快照,定位线程出现长时间停顿的原因 jstack -l 15296 jstat 统计内存状况,显示虚拟机进程中类装载、内存、垃圾收集等运行数据 jstat -gcutil 15296 统计内…

深入JVM锁机制1-synchronized

   目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。    数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进一步追问:JVM底层又是如何实现synchroniz…

JVM

java内存区域 程序计数器:记录字节码行号指令,唯一一个没有OutOfMemoryError的区域。 虚拟机栈:每个方法的执行过程都伴随着从进栈到出栈,存储局部变量,方法出口等信息。 本地方法栈:与2相同,只是为Native方法服务。 堆:内存最大,存放实例对象。 方法区:存放常量,静态变量,虚拟机加载类信息等数据。 运行时常量池(方法区的一部分):类版本,字段,方法,与静态常量池等数据在类加载后进…

jvm

JVM 发表评论
什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 为什么要有JVM? Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语…

JVM

Java, JVM 发表评论
https://blog.csdn.net/hui_yan2012/article/details/70194449 https://baijiahao.baidu.com/s?id=1606480770208000096&wfr=spider&for=pc https://blog.csdn.net/huachao1001/article/details/51533132 https://blog.csdn.net/GarfieldEr007/article/details/55822985

JVM

JVM 发表评论
JVM 理解jvm中的栈 堆 堆分配 堆GC标记 堆二次标记 堆设置 堆日志分析 标记暂停阶段 年轻代收集 年老代收集 G1收集器 可视化分析 小结 JVM 理解jvm中的栈 一句话就是java运行在虚拟机之上,虚拟机帮java屏蔽底层的指令集,让java能够跨平台运行。 本章重点从虚拟机内存模型(运行时数据区域)入手。先看图: 这是一张比较官方的虚拟机模型图,我们今天讲的就是虚线框的那部分的栈。 栈是我们最常用的…
下一页 »