Java VM

何时需要理解Java 虚拟机机制

一、排错

二、性能优化

字节码文件的执行流程、机制。

涉及到文件的加载机制(类加载器)、执行机制(执行引擎)、运行时优化(JIT运行时编译)、以及内存分配与垃圾回收。

同时涉及到并发访问时的内存模型与线程安全机制。

HotSpot的主要参数也主要是涉及上面的几大块:类型加载参数、即时编译、内存参数、线程参数、调试参数。

从文件执行角度来看,加载:类加载器来完成--------> 解释执行:解释器完成/编译执行(缓存为本地代码,性能优化的方案):编译器(client, server)------------->内存分配与回收:垃圾回收器。

编译器:1、client(方法调用计数器:?,回边计数器:?)        2、server(方法调用计数器:?,回边计数器:?)

编译对象:(方法调用计数器----->被多次调用的方法);2.(回边计数器---->被多次执行的循环体)

编译执行触发条件:基于计数器的热点探测-->(方法调用计数器)1、被多次调用的方法;(回边计数器)2.被多次执行的循环体;

时间: 2024-12-16 17:58:22

Java VM的相关文章

#测试相关#Getting “junit.framework.AssertionFailedError: Forked Java VM exited abnormally” Exception

编写Ant脚本进行持续测试的时候,出现了junit.framework.AssertionFailedError: Forked Java VM exited abnormally的报错,以此为关键字谷歌了很久,得到的答案几乎都是扩大内存之类,或者设置junit标签的fork为no的,试过了均是无效. 其实这个提示是不够精准的. I faced similar issue. I ran junit tests as ant task. Added showoutput="yes" an

Full GC分析:设置Java VM参数实现在Full GC前后自动生成Dump

本文讲解了如何设置Java VM参数实现在Full GC前后自动生成Dump.共有三个VM参数需要设置: HeapDumpBeforeFullGC 实现在Full GC前dump. HeapDumpBeforeFullGC 实现在Full GC后dump. HeapDumpPath               设置Dump保存的路径 设置这些参数的方法,这里总结了四种,大家可以根据情况选择使用. 方法1: 启动jvm时,带上这些参数(这个方法适合开发测试环境) java -Xms200m -Xm

jboss启动时java VM参数设置

jboss服务器中jvm参数的设置: 在$JBOSS_HOME/bin下的run.sh里面存在这么一个设置: Java代码   # Force IPv4 on Linux systems since IPv6 doesn't work correctly with jdk5 and lower if [ "$linux" = "true" ]; then JAVA_OPTS="-Xms128m -Xmx512m -Dsun.rmi.dgc.client.g

matlab中增加Java VM 的堆空间(解决xml_io_tools出现的OutOfMemory问题)

今天用MATLAB写程序,调用了xml_io_tools(很赞的一个xml读写工具包)中的函数,但是由于我要书写的文件比较大,5m左右,运行时不知道xml_io_tools中的哪一块超出了java中的内存限制,于是就来研究下怎么增加matlab中Java VM的堆空间,首先用英文在墙外搜了半天,google搜出来的前几条都是使用Jconsole来分配空间的,但是需要下载相应的matlab的版本的JDK的,中间各种曲折,详见文尾,最后放弃治疗的用中文搜了一下,发现早就有了官方的解答了,汗,将文章复

java VM 参数设置 默认native栈大小设置

问题总结: 程序栈太小,64位机器的栈大小默认比32位的大,将程序从64放到32中执行则报错,需要修改初始堆栈大小 (.so库中提供两个函数接口,一个里面使用的是尺寸较大的图像,另一个处理的图像很小,只有调用前一个函数的时候会溢出) 之前在hadoop程序中利用jni调用了C语言写的(libxxx.so)本地库,在开始的机器上(64位Ubuntu)上运行正常,但是复制到另一个(32位Ubuntu)集群中 运行总是报错: An irrecoverable stack overflow has oc

java vm args

这个问题主要还是由这个问题 java.lang.OutOfMemoryError: Java heap space 引起的.第一次出现这样的的问题以后,引发了其他的问题.在网上一查可能是JAVA的堆栈设置太小的原因.跟据网上的答案大致有这两种解决方法: 1.设置环境变量 解决方法:手动设置Heap size修改TOMCAT_HOME/bin/catalina.shset JAVA_OPTS= -Xms32m -Xmx512m可以根据自己机器的内存进行更改. 2.java -Xms32m -Xmx

OpenProj打开不了或者提示”Failed to load Java VM Library”的错误的解决方案

一.双击打开OpenProj.exe没反应的解决方案: 1) 修改OpenProj1.4.0.ini,将Maximum Version=any改为Maximum Version=1.7,保存. 2)这时再双击OpenProj.exe,会弹出选择jre的路径,选择本机安装jre的目录(重要:必须选择32位的jre,且Java版本在1.8以下,下面会说明原因) 二.提示"Failed to load Java VM Library"的错误的解决方案: 1) 打开"开始"

在运行Eclipse时明确指定要使用的Java VM

创建桌面快捷方式 Specifying the Java virtual machineHere is a typical Eclipse command line: eclipse -vm c:\jdk6u22\jre\bin\javaw Tip: It's generally a good idea to explicitly specify which Java VM to use when running Eclipse. This is achieved with the "-vm&q

java vm(velocity)模板

Velocity是什么?  Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象.  当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人 员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码.Velocity将java代码从web页面中分离出来,这样为web站点的长

java vm (二) 之 虚拟机启动对类的操作

虚拟机在启动中对类的操作 虚拟机加载类(classloader克拉斯楼的),类进行处理以后是字节码,虚拟机认识就可以做下面的事情了.从硬盘到内存的过程 链接 对类进行验证,类的头部用两个字节保存了,这个信息,详情找个专业的文档链接放到这里. 为类分配内存,给对应的变量附言默认值 int 给他 个0  Integer 给他个null…… 将特殊的字符进行解析,应该是跟Spring 对 @autowrite 的解析类似,有自己的套路,(找个合适的例子放到这里) 初始化变量赋予正确的值 比热 priv