博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM笔记
阅读量:6585 次
发布时间:2019-06-24

本文共 1093 字,大约阅读时间需要 3 分钟。

由JVM控制

  1. class 文件存储格式
  2. 何时加载
  3. 如何连接
  4. JVM如何执行字节码

程序员可以控制

  1. 字节码的生成
  2. 类加载器

Tomcat

  1. 部署在同一个Tomcat上的两个Web项目相互隔离
  2. 两个Web项目中使用的java类库可以相互共享
  3. Web服务器自身同web项目完全隔离
  4. 支持jsp的需要支持Hotswap

Tomcat下可以存放lib的四组目录

  1. /common: 类库可被Tomcat和所有Web应用程序共同使用(CommonClassLoader)
  2. /server: 类库只能被Tomcat使用,对所有Web项目不可见(CatalinaClassLoader)
  3. /shared: 类库可被所有Web项目共同使用,但是对Tomcat自身不可见(SharedClassLoader)
  4. /WebApp/WEB-INF: 类库仅仅可以被当前Web应用程序使用,对Tomcat和其他Web程序都不可见(WebappClassLoader)

Tomcat 6以后, /common被重命名为/lib, /server 和 /shared 默认隐藏,需要从/config/Catalina.properties [server.loader & shared.loader]设置

Java字节码生成

1.javac 字节码生成技术的老祖宗,由java实现

Spring 中Bean是面向切面编程的

动态代理实现了可以在原始类和接口还未知的时候,就确定代理类的行为,当代理类与原始类脱离直接联系之后,就可以很灵活地重用于不同地应用场景之中

学习JEE规范,去看JBoss源码。 学习类加载器,就去看OSGI源码

JVM .class -> memory -> 校验 -> 转化 -> 解析 -> 初始化 -> Java类型

运行期: 类的加载和连接过程

类从被加载到JVM内存开始到卸载出内存。 整个生命周期如下所示: 加载(Loading) -> 连接(Linking)[验证(Verification) -> 准备(Preparation) -> 解析(Resolution)] -> 初始化(Initialization) -> 使用(Using) -> 卸载(Unloading)

为了实现多态的特性, 解析的过程有可能會在初始化之后。其他过程需按部就班的一步一步完成

记载过程

  1. 通过一个类的全限定名称來获取定义此类的二进制字节流
  2. 将这个字节流所代表的静态存储结构转化为方法区运行时的数据结构
  3. 在java堆中生成代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口


转载地址:http://xuano.baihongyu.com/

你可能感兴趣的文章
【 程 序 员 】:伤不起的三十岁,你还有多远 ?
查看>>
openldap安装
查看>>
[leetcode]count and say
查看>>
润乾报表 - 缓存问题
查看>>
利用IFormattable接口自动参数化Sql语句
查看>>
泛型Dictionary的用法详解
查看>>
明晰三种常见存储技术:DAS、SAN和NAS
查看>>
ContentProvider简单介绍
查看>>
Visual Studio 2014 CTPs 下载 和C# 6.0 语言预览版介绍
查看>>
js混淆 反混淆 在线
查看>>
WinForm 之 程序启动不显示主窗体
查看>>
FragmentTransaction.replace() 你不知道的坑
查看>>
分布式消息队列 Kafka
查看>>
模拟退火算法
查看>>
Solr 按照得分score跟指定字段相乘排序
查看>>
StringUtils方法全集介绍
查看>>
性能调校
查看>>
VMware workstation虚拟网卡类型介绍
查看>>
C# web 更新折腾记
查看>>
IBM主机巡检操作文档
查看>>