jvm
pq258280920
这个作者很懒,什么都没留下…
展开
-
Java 类文件结构初探(16进制编码角度理解 阅读笔记)
现在正在读一本《 深入理解java虚拟机——JVM高级特性与最佳实践 》的“类文件结构”一章,阅读笔记《深入理解Java虚拟机——最高实践》实验实验:写了两个简单的类,一个是普通的类A另外一个是带有static main方法的类TestA.javapackage jvm.class_structure;public class A {}转载 2014-05-15 10:54:01 · 430 阅读 · 0 评论 -
JVM GC与频繁GC
内容:1.JVM GC的内存管理2.频繁 GC 的原因 一、JVM GC的内存管理1.JVM内存分布图 2.JVM GC运行原理(1)从对象角度来看在JVM进行GC时,内存中存在新生代(年轻代)、老年代(年老代)、永久带。 在我们运行程序时,会创建很多对象。 1)从生命周期上看:根据经验,绝大多数对象在使用过之后转载 2017-04-06 00:23:24 · 854 阅读 · 0 评论 -
Tomcat内存设置详解
Java内存溢出详解 一、常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存。可以利用JVM提供的-Xmn -Xms -Xmx转载 2015-04-13 16:26:12 · 345 阅读 · 0 评论 -
Minor GC 过程
JVM内存管理和JVM垃圾回收 JVM内存组成结构JVM内存结构由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示:1)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由FromSpace和ToSpace组成,结构图如下所示:转载 2014-05-09 16:55:00 · 3380 阅读 · 1 评论 -
类加载机制
Java虚拟机类加载过程是把描述类的数据从Class文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。在加载阶段,java虚拟机需要完成以下3件事:a.通过一个类的全限定名来获取定义此类的二进制字节流。b.将定义类的二进制字节流所代表的静态存储结构转换为方法区的运行时数据结构。c.在java堆中生成一个代表该原创 2014-05-17 10:26:34 · 619 阅读 · 0 评论 -
JAVA自定义类加载器
import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;/** * * 一、ClassLoader加载类的顺序 *原创 2014-05-30 09:55:54 · 547 阅读 · 0 评论 -
JAVA热部署测试
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.HashMap;import java.util.Map;public class ManagerClass原创 2014-05-30 18:16:51 · 660 阅读 · 0 评论 -
jvm笔记
一、Java技术体系Java技术体系可以分为四个平台,分别为: JavaCard:支持一些Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。 JavaME(Micro Edition):支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了针对移动终端的支持,这个版本以前称为J2ME。JavaSE(Standard原创 2014-05-18 15:11:15 · 513 阅读 · 0 评论 -
tomcat与OSGI:类加载器
Tomcat:正统的类加载架构。通常的Java Web服务器都实现了自己的类加载器(一般不止一个)。正常的Web服务器要解决如下几个问题:(1)部署在一个服务器上的两个Web应用程序所使用的Java类库可以实现隔离。(2)部署在一个服务器上的两个Web应用程序所使用的Java类库可以实现共享。(3)服务器尽可能的保证自身安全不受部署的Web应用程序影响。(4)支持JSP的W转载 2014-05-28 15:50:09 · 1978 阅读 · 0 评论 -
JVM学习之:虚拟机中的运行时栈帧总结
每个人都知道,各种各样的动画视频,都是由一帧一帧图片连续切换结果的结果而产生的,其实虚拟机的运行和动画也类似,每个在虚拟机中运行的程序也是由许多的帧的切换产生的结果,只是这些帧里面存放的是方法的局部变量,操作数栈,动态链接,方法返回地址和一些额外的附加信息组成,在虚拟机中包含这些信息的帧称为“栈帧”,每个方法的执行,在虚拟机中都是对应的栈帧在虚拟机栈中的入栈到出栈的过程。其中比较重要的一点时,如果转载 2014-05-22 14:49:35 · 867 阅读 · 0 评论 -
关于 forName 和 loadClass
关于forName()方法这个方法总是返回要加载的类的Class类的实例1、forName(String className)单参数时, initialize=true a.总是使用当前类装载器(也就是装载执行forName()请求的类 的类装载器) b.总是初始化这个被装载的类(当然也包括:装载、连接、初始化)2、forName(String className转载 2014-07-19 11:10:06 · 427 阅读 · 0 评论 -
java 方法分派笔记
Java语言中,虚方法可以通过覆写(override)的方式来实现子类型多态(subtype polymorphism)。Java语言支持三种多态,除了子类型多态外还有通过方法重载支持的ad-hoc多态(ad-hoc polymorphism)与通过泛型支持的参数化多态(parametric polymorphism)。在面向对象编程的语境里“多态”一般指子类型多态,下面提到“多态”一词也特定原创 2014-07-19 16:55:08 · 400 阅读 · 0 评论 -
JAVA 方法分派
提到方法调用,我想大多数人的第一反应就是执行一个方法呗,其实在虚拟机的眼里方法调用只是确定他要调用哪个方法而已,和方法的执行还是有比较大的区别的.任何一个层序的运行都离不开方法的调用以及方法的执行,但是在JVM学习之:虚拟机中的运行时栈帧总结(二)提到过,在Class文件的编译过程中不包括传统的连接步骤(连接:把符号引用转化为可以直接找到方法体的直接引用),但是正是因为这点也给java带来了更大的转载 2014-05-26 15:12:02 · 593 阅读 · 0 评论 -
基于栈与基于寄存器的指令集架构
用C的语法来写这么一个语句:C代码 a = b + c; 如果把它变成这种形式:add a, b, c那看起来就更像机器指令了,对吧?这种就是所谓“三地址指令”(3-address instruction),一般形式为:op dest, src1, src2许多操作都是二元运算+赋值。三地址指令正好可以指定两个源和一个目标,能非常灵活的支持二转载 2014-05-15 11:11:26 · 4745 阅读 · 1 评论 -
GC日志分析
首先,给出一个日志输出的例子:参数设置为:-XX:+PrintGCDetails -XX:-UseAdaptiveSizePolicy -XX:SurvivorRatio=8 -XX:NewSize=10M -XX:MaxNewSize=10M参数解释:-XX:+PrintGCDetails 启用日志-XX:-UseAdaptiveSizePolicy 禁用动态调整,使Su转载 2017-04-06 00:15:09 · 280 阅读 · 0 评论