当前位置:文档之家› Eclipse中JVM内存设置

Eclipse中JVM内存设置

Eclipse中JVM内存设置
Eclipse中JVM内存设置

Eclipse中JVM内存设置

eclipse.ini内存设置

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M

这里有几个问题:

1. 各个参数的含义什么?

2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?

3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?

下面我们一一进行回答

1. 各个参数的含义什么?

参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。

堆(Heap)和非堆(Non-heap)内存

按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memo ry)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。

堆内存分配

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-X mx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。

非堆内存分配

JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxP ermSize设置最大非堆内存的大小,默认是物理内存的1/4。

JVM内存限制(最大值)

首先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,J VM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows 系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。

2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?

通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因:

1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;

2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。

3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?

那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置规则:

参数形如“项值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。比如我们使用-vm C:Javajre1.6.0binjavaw.exe参数设置虚拟机,在eclips e.ini文件中要写成这样:

按照上面所说的,最后参数在eclipse.ini中可以写成这个样子:

实际运行的结果可以通过Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configur ation Details”按钮进行查看。

另外需要说明的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的:

其中–launcher.XXMaxPermSize(注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我觉得唯一的区别就是前者是eclipse.exe启动的时候设置的参数,而后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了,所以这里可以把–launcher.XXMaxPermSize和下一行使用#注释掉。

3. 其他的启动参数。如果你有一个双核的CPU,也许可以尝试这个参数:

让GC可以更快的执行。(只是JDK 5里对GC新增加的参数)

UBOOT命令详解

常用U-boot命令详解(z) 2010-09-30 15:05:52| 分类:学习心得体会|字号订阅 U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell了,在我编译的 U-boot-2009.11中的命令行模式模式下支持“Tab”键的命令补全和命令的历史记录功能。而且如果你输入的命令的前几个字符和别的命令不重复,那么你就只需要打这几个字符即可,比如我想看这个U-boot的版本号,命令就是“ version”,但是在所有的命令中没有其他任何一个的命令是由“v”开头的,所以只需要输入“v”即可。 [u-boot@MINI2440]# version U-Boot 2009.11 ( 4月04 2010 - 12:09:25) [u-boot@MINI2440]# v U-Boot 2009.11 ( 4月04 2010 - 12:09:25) [u-boot@MINI2440]# base Base Address: 0x00000000 [u-boot@MINI2440]# ba Base Address: 0x00000000 由于U-boot支持的命令实在太多,一个一个细讲不现实,也没有必要。所以下面我挑一些烧写和引导常用命令介绍一下,其他的命令大家就举一反三,或者“help”吧! (1)获取帮助 命令:help 或? 功能:查看当前U-boot版本中支持的所有命令。 [u-boot@MINI2440]#help ?- alias for'help' askenv - get environment variables from stdin base - print or set address offset bdinfo - print Board Info structure bmp - manipulate BMP image data boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootelf - Boot from an ELF image in memory bootm - boot application image from memory bootp - boot image via network using BOOTP/TFTP protocol

Eclipse使用设置、性能调优

Eclipse使用设置、性能调优 eclipse调优 一般在不对eclipse进行相关设置的时候,使用eclipse总是会觉得启动好慢,用起来好卡,其实只要对eclipse的相关参数进行一些配置,就会有很大的改善。 加快启动速度 1.在eclipse启动的时候,它总是会搜索让其运行的jre,往往就是这个搜索过程让eclipse启动变慢了。(没设置时,等2-3s出现进度条,设置后直接出现进度条) 只要在eclipse.ini中加入-vm的参数就可以了 2.取消所有启动时要激活的插件(在用时激活也一样)和其它的相关的在启动时执行的操作。

3.关闭自动更新

减少jvm内存回收引起的eclipse卡的问题 这个主要是jvm在client模式,进行内存回收时,会停下所有的其它工作,带回收完毕才去执行其它任务,在这期间eclipse就卡住了。所以适当的增加jvm申请的内存大小来减少其回收的次数甚至不回收,就会是卡的现象有明显改善。 主要通过以下的几个jvm参数来设置堆内存的: -Xmx512m 最大总堆内存,一般设置为物理内存的1/4 -Xms512m 初始总堆内存,一般将它设置的和最大堆内存一样大,这样就不需要根据当前堆使用情况而调整堆的大小了 -Xmn192m 年轻带堆内存,sun官方推荐为整个堆的3/8 堆内存的组成总堆内存= 年轻带堆内存+ 年老带堆内存+ 持久带堆内存年轻带堆内存对象刚创建出来时放在这里 年老带堆内存对象在被真正会回收之前会先放在这里 持久带堆内存class文件,元数据等放在这里 -XX:PermSize=128m 持久带堆的初始大小 -XX:MaxPermSize=128m 持久带堆的最大大小,eclipse默认为256m。如果要编译jdk这种,一定要把这个设的很大,因为它的类太多了。 我的配置(2g内存的笔记本): 还有其它的相关参数可以看看下面的参考材料,很有启发的: -XX:+UseParallelGC 使用并发内存回收 -XX:+DisableExplicitGC 禁用System.gc()的显示内存回收 eclipse.ini -startup plugins/https://www.doczj.com/doc/3f10068891.html,uncher_1.3.0.v20120522-1813.jar --launcher.library plugins/https://www.doczj.com/doc/3f10068891.html,uncher.win32.win32.x86_1.1.200.v20120522-1813

QJR 软启动说明书

QJR系列 矿用隔爆兼本质安全型软起动器 使 用 说 明 书 上海佳洲防爆电器有限公司

使用前请认真阅读本说明书 本说明书根据GB9969.1《工业产品使用说明书总则》;GB9969.2《机电产品使用说明书编写规定》的有关规定要求和内容进行编制。 产品执行Q/JZ001-2011、MT/T943-2005和GB3836-2000等标准。 一、概述 1、产品特点 矿用隔爆兼本质安全型软起动器(以下简称软起动器)是机电一体化的新技术产品,该产品适用于交流380V、660V、1140V的电压异步电动机重负荷软起动,在正常运转状态下对电机进行各种保护。它具有起动电流小,起动速度平稳可靠,保护功能齐全,是我公司自行设计、开发的高技术产品。在矿用隔爆兼本质安全型真空电磁起动器的基础上,改直接起动或停止为软起动或软停止,降低了起动电流(由4Ie-7Ie改善为0.5Ie-4Ie可调),减少了起动时冲击电流对电网及负载的冲击。它用软件控制方式来平滑起动电机,一方面以软件控强电,另一方面使电动机转速由慢到快逐渐上升到额定转速,有效解决了直接起动或自耦降压起动、Y/Δ转换、降压起动造成的起动时瞬时电流尖峰冲击,起动二次冲击电流对负载产生冲击转距,当电网电压下降可能造成电机堵转等诸多问题,是传统的矿用隔爆本质安全型真空电磁起器的理想替代产品。 该产品采用全中文宽屏显示、并具有漏电闭锁、断相、过压、欠压、、过载、三相不平衡、短路等保护功能,并能储存相应的故障信息,以及运行电流,电压故障等工作状态信息。 2、主要用途及适用范围 本起动器主要用于有甲烷和煤尘爆炸环境的煤矿井下、露天煤矿、冶金矿山、港口码头、选煤厂、发电厂等对重负荷的运输设备实行软起动。 起动器可以就地、远距离起动、停止控制,及联机控制等多种方式;额定电压为1140V、660V、380V,频率是50Hz,额定电流在400A范围内的三相异步电机,起动方式可以是软起动,也可以像普通的磁力起动器一样直接带负荷起动。机壳外有隔离换向开关手柄,可以对电机的转向进行选择,必要时按下急停按钮,转动隔离换向手柄至分位置,直接分断电动机。 3、规格 电压等级:1140V、660V、380V。 电流等级:400A以下。 4、型号的组成及代表意义 Q J R-□/□ 额定电压:V 额定电流:A 软起动 隔爆兼本质安全型 起动器 5、软起动器的防爆型式与标志为:矿用隔爆兼本质安全型

Java虚拟机(JVM)参数配置说明

Java虚拟机(JVM)参数配置说明 在Java、J2EE大型应用中,JVM非标准参数的配置直接关系到整个系统的性能。 JVM非标准参数指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置。但是在生产环境中,为了提高性能,往往需要调整这些参数,以求系统达到最佳新能。另外这些参数的配置也是影响系统稳定性的一个重要因素,相信大多数Java开发人员都见过“O utOfMem ory”类型的错误。呵呵,这其中很可能就是JVM参数配置不当或者就没有配置没意识到配置引起的。 为了说明这些参数,还需要说说JDK中的命令行工具一些知识做铺垫。 首先看如何获取这些命令配置信息说明: 假设你是windows平台,你安装了J2SDK,那么现在你从cmd控制台窗口进入J2SDK安装目录下的bin目录,然后运行java命令,出现如下结果,这些就是包括java.exe工具的和J VM的所有命令都在里面。 ----------------------------------------------------------------------- D:\j2sdk15\bin>java Usage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args...] (to execute a jar file) where options include: -client to select the "client" VM -server to select the "server" VM -hotspot is a synonym for the "client" VM [deprecated] The default VM is client.

ABB软启动器参数设置方法

ABB软启动器参数设置方法 软起动器是一种集电机软起动、软停车、轻载节能和多种保护功能于一体的新颖电机控制装置,国外称为Soft Starter。它的主要构成是串接于电源与被控电机之间的三相反并联闸管及其电子控制电路。运用不同的方法,控制三相反并联闸管的导通角,使被控电机的输入电压按不同的要求而变化,就可实现不同的功能。 软起动器和变频器是两种完全不同用途的产品。变频器是用于需要调速的地方,其输出不但改变电压而且同时改变频率;软起动器实际上是个调压器,用于电机起动时,输出只改变电压并没有改变频率。变频器具备所有软起动器功能,但它的价格比软起动器贵得多,结构也复杂得多。ABB PSS系列软启动器有3个旋转设定开关合一个2位拨动开关,对于各种不同的应用场合都能完成基本的参数设定。 1.启动曲线——设定启动时电压提升的时间 说明:斜坡升压软起动。这种起动方式最简单,不具备电流闭环控制,仅调整晶闸管导通角,使之与时间成一定函数关系增加。其缺点是,由于不限流,在电机起动过中,有时要产生较大的冲击电流使晶闸管损坏,对电网影响较大,实际很少应用。启动时间可在1-30秒内调整。 2.停止曲线——设定停止时间电压下降的速度 说明:电机停机时,传统的控制方式都是通过瞬间停电完成的。但有许多应用场合,不允许电机瞬间关机。例如:高层建筑、大楼的水泵系统,如果瞬间停机,会产生巨大的“水锤”效应,使管道,甚至水泵遭到损坏。为减少和防止“水锤”效应,需要电机逐渐停机,即软停车,采用软起动器能满足这一要求。软起动器中的软停车功能是,晶闸管在得到停机指令后,从全导通逐渐地减小导通角,经过一定时间过渡到全关闭的过程。停车的时间根据实际需要可在0 ~ 30s调整。

eclipse下ini设置

eclipse下ini设置 Ubuntu 系统下,Eclipse 配置文件: vi ~/eclipse/eclipse.ini -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 这里有几个问题: 1. 各个参数的含义什么? 2. 为什么有的机器将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动? 3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置? 1. 各个参数的含义什么? 参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。 堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java 虚拟机启动时创建的。在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。 可以看出JVM主要管理两种类型的内存:堆和非堆 简单来说:堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。 堆内存分配 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms 的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。 非堆内存分配 JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。 JVM内存限制(最大值) 首先,JVM内存限制于实际的最大物理内存(内存条),假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。 2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动? 通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动,主要有以下几种原因:

u-boot启动分析

背景: Board →ar7240(ap93) Cpu →mips 1、首先弄清楚什么是u-boot Uboot是德国DENX小组的开发,它用于多种嵌入式CPU的bootloader程序, uboot不仅支持嵌入式linux系统的引导,当前,它还支持其他的很多嵌入式操作系统。 除了PowerPC系列,还支持MIPS,x86,ARM,NIOS,XScale。 2、下载完uboot后解压,在根目录下,有如下重要的信息(目录或者文件): 以下为为每个目录的说明: Board:和一些已有开发板有关的文件。每一个开发板都以一个子目录出现在当前目录中,子目录存放和开发板相关的配置文件。它的每个子文件夹里都有如下文件(以ar7240/ap93为例): Makefile Config.mk Ap93.c 和板子相关的代码 Flash.c Flash操作代码 u-boot.lds 对应的链接文件 common:实现uboot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是cmd_bootm.c cpu:与特定CPU架构相关目录,每一款Uboot下支持的CPU在该目录下对应一个子目录,比如有子目录mips等。它的每个子文件夹里都有入下文件: Makefile Config.mk Cpu.c 和处理器相关的代码s Interrupts.c 中断处理代码 Serial.c 串口初始化代码 Start.s 全局开始启动代码 Disk:对磁盘的支持

Doc:文档目录。Uboot有非常完善的文档。 Drivers:Uboot支持的设备驱动程序都放在该目录,比如网卡,支持CFI的Flash,串口和USB等。 Fs:支持的文件系统,Uboot现在支持cramfs、fat、fdos、jffs2和registerfs。 Include:Uboot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。该目下configs目录有与开发板相关的配置文件,如 ar7240_soc.h。该目录下的asm目录有与CPU体系结构相关的头文件,比如说mips 对应的有asm-mips。 Lib_xxx:与体系结构相关的库文件。如与ARM相关的库放在lib_arm中。 Net:与网络协议栈相关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现。 Tools:生成Uboot的工具,如:mkimage等等。 3、mips架构u-boot启动流程 u-boot的启动过程大致做如下工作: 1、cpu初始化 2、时钟、串口、内存(ddr ram)初始化 3、内存划分、分配栈、数据、配置参数、以及u-boot代码在内存中的位置。 4、对u-boot代码作relocate 5、初始化malloc、flash、pci以及外设(比如,网口) 6、进入命令行或者直接启动Linux kernel 刚一开始由于参考网上代码,我一个劲的对基于smdk2410的板子,arm926ejs的cpu看了N 久,启动过程和这个大致相同。 整个启动中要涉及到四个文件: Start.S →cpu/mips/start.S Cache.S →cpu/mips/cache.S Lowlevel_init.S →board/ar7240/common/lowlevel_init.S Board.c →lib_mips/board.c 整个启动过程分为两个阶段来看: Stage1:系统上电后通过汇编执行代码 Stage2:通过一些列设置搭建了C环境,通过汇编指令跳转到C语言执行. Stage1: 程序从Start.S的_start开始执行.(至于为什么,参考u-boot.lds分析.doc) 先查看start.S文件吧!~ 从_start标记开始会看到一长串莫名奇妙的代码:

eclipse优化(操作很卡顿)

我的ECLIPSE运行时速度奇慢,具体表现为: 1、只要ECLIPSE启动后,硬盘灯就狂闪,不停的读盘; 2、发布TOMCAT经常在0%; 3、偶尔CPU占满; 网上讲优化的文章无数,但是总是有用的却很少,大部分是转载甚至是抄袭的。在借鉴各个文章的做法并不断尝试后,我的问题终于解决了。 1、启动参数的优化; 我的启动参数为:-Xms976m -Xmx976m -XX:PermSize=128m -XX:MaxPermSize=128m -Xmn168m -XX:+DisableExplicitGC 其中XX:PermSize和XX:MaxPermSize是必须的,仅仅设置Xmx,经常出现ECLIPSE内存溢出的情况; 2、启动插件优化: windows - preference- general - startup and shutdown 里,只保留第1、3、4,其他全部取消,保留的为: Usage DAta Gathering Plug-in, Equinox Provisioning Platform Automatic Updata Support, WTP Webservice UI Plug-in 4、关闭验证 windows - preference-Validation 全部取消,只保留Manual 列; 在工程上右键-Validation ,同样全部取消,只保留Manual列,如果需要检查代码是否有错,可以在代码文件上右键,手动验证。 5、清理工程文件 删除工作空间目录下.metadata\.plugins\https://www.doczj.com/doc/3f10068891.html,agedata.recording目录里的所有文件,主要要保留这个目录,只删除目录下文件即可 在经过以上操作后,我的ECLIPSE无论是启动还是发布或者是编译工程,速度都提升了不少,特别是启动,原来要等一两分钟,现在15秒内进界面,并且所有的代码功能、工程编译、发布都不受影响,PUBLISH TOMCAT的时间基本在2分钟以内,我们的工程文件还算是比较大的了。重点是,所有操作过程中硬盘灯再也没出现过狂闪、狂读盘的情况了。以上仅供参考大家参考,欢迎反馈问题和建议,谢谢。

JVM内存分配(栈堆)与JVM回收机制

Java 中的堆和栈 简单的说: Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。 引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。 具体的说: 栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。 栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 栈有一个很重要的特殊性,就是存在栈中的数据可以共享。假设我们同时定义: int a = 3; int b = 3; 编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。接着处理int b = 3;在创建完b的引用变量后,因为在栈中已经有3这个值,便将b直接指向3。这样,就出现了a与b同时均指向3的情况。这时,如果再令a=4;那么编译器会重新搜索栈中是否有4值,如果没有,则将4存放进来,并令a指向4;如果已经有了,则直接将a指向这个地址。因此a值的改变不会影响到b 的值。要注意这种数据的共享与两个对象的引用同时指向一个对象的这种共享是不同的,因为这种情况a的修改并不会影响到b, 它是由编译器完成的,它有利于节省空间。而一个对象引用变量修改了这个对象的内部状态,会影响到另一个对象引用变量。 String是一个特殊的包装类数据。可以用: String str = new String("abc"); String str = "abc"; 两种的形式来创建,第一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。 而第二种是先在栈中创建一个对String类的对象引用变量str,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str指向”abc”,如果已经有”abc”则直接令 str指向“abc”。 比较类里面的数值是否相等时,用equals()方法;当测试两个包装类的引用是否指向同一个对象时,用==,下面用例子说明上面的理论。 String str1 = "abc"; String str2 = "abc"; System.out.println(str1==str2); //true

Uboot如何向内核传递参数

Uboot如何向内核传递参数 一:启动参数的传递过程 启动参数是包装在数据结构里的,在linux kernel启动的时候,bootloader把这个数据结构拷贝到某个地址, 在改动PC跳向内核接口的同时,通过通用寄存器R2来传递这个地址的值,下面这句话就是uboot跳向linux kernel的代码(bootm命令) theKernel (0, bd->bi_arch_number, bd->bi_boot_params); thekernel其实不是个函数,而是指向内核入口地址的指针,把它强行转化为带三个参数的函数指针,会把三个 参数保存到通用寄存器中,实现了向kernel传递信息的功能,在这个例子里,会把R0赋值为0,R1赋值为机器号 R2赋值为启动参数数据结构的首地址 因此,要向内核传递参数很简单,只要把启动参数封装在linux预定好的数据结构里,拷贝到某个地址(一般约定俗成是内存首地址+100dex) 二:启动参数的数据结构 启动参数可保存在两种数据结构中,param_struct和tag,前者是2.4内核用的,后者是2.6以后的内核更期望用的 但是,到目前为止,2.6的内核也可以兼容前一种结构,两种数据结构具体定义如下(arm cpu): struct param_struct { union { struct { unsigned long page_size; /* 0 */ unsigned long nr_pages; /* 4 */ unsigned long ramdisk_size; /* 8 */ unsigned long flags; /* 12 */ #define FLAG_READONLY 1 #define FLAG_RDLOAD 4 #define FLAG_RDPROMPT 8 unsigned long rootdev; /* 16 */ unsigned long video_num_cols; /* 20 */ unsigned long video_num_rows; /* 24 */ unsigned long video_x; /* 28 */ unsigned long video_y; /* 32 */ unsigned long memc_control_reg; /* 36 */ unsigned char sounddefault; /* 40 */ unsigned char adfsdrives; /* 41 */ unsigned char bytes_per_char_h; /* 42 */ unsigned char bytes_per_char_v; /* 43 */ unsigned long pages_in_bank[4]; /* 44 */ unsigned long pages_in_vram; /* 60 */

eclipse+websphere配置说明

Eclipse+Websphere配置说明

目录 一、前言 (3) 二、安装webSphere (3) 2.1.安装WAS (3) 2.2.配置WAS日志输出方式 (5) 三、eclipse配置 (6) 3.1.下载purchaseEAR工程 (6) 3.2.在eclipse中配置websphere (7) 3.3.部署purchaseEAR (8) 3.4.eclipse启动websphere (9) 3.5.修改eclipse部署方式 (10) 四、webSphere配置 (11) 3.1.部署工程 (11) 3.2.支持jdk1.5 (13) 五、注意事项 (14) 4.1.JSP注意事项 (14) 4.2.webSphere注意事项 (15)

一、前言 本文档用于描述开发青海集采系统过程中使用eclipse+websphere的配置过程。 工程环境: Jdk1.5 Myeclipse6.0以上 Websphere6.1 TortoiseCVS 二、安装webSphere 2.1.安装WAS ●解压was.cd.6100.trial.base.windows.ia32.zip,运行launchpad.exe ●选择“启动WebSphere Application Server - Trial 的安装向导。” 一路“下一步”,提示输入登陆控制台的用户名密码。 ●继续“下一步”直到完成安装。安装完成之后默认会启动“第一步”,如图:

选择“安装验证”,如果安装正常会显示如下信息,此时websphere服务已经被启动。

2.2.配置WAS日志输出方式 ●输入:http://localhost:9060/admin进入webpshere管理平台,如果能看到如下页面, 说明websphere正常启动了。填写你设置的用户名密码。 ●为了方便在ecilpse控制台中看到日志信息,所以要设置log信息输出到控制台,(默认 情况下log是输出到文件中)。选择服务器→应用程序服务器→server1→记录和跟踪→JVM日志,将System.out和System.err下的“文件名”的值修改为“console” ●在“第一步”控制台中选择“停止服务器”,接下来我们使用eclipse来操作webpshere。

软启动基本知识

软启动基本知识 1.软起动器是一种集软停车、轻载节能和多种保护功能于一体的新颖电机控制装置,国外称为Soft Starter。它的主要构成是串接于电源与被控电机之间的三相反并联闸管及其电子控制电路。 运用不同的方法,控制三相反并联闸管的导通角,使被控电机的输入电压按不同的要求而变化,就可实现不同的功能。 软起动器和变频器是两种完全不同用途的产品。变频器是用于需要调速的地方,其输出不但改变电压而且同时改变频率;软起动器实际上是个调压器,用于电机起动时,输出只改变电压并没有改变频率。变频器具备所有软起动器功能,但它的价格比软起动器贵得多,结构也复杂得多。 2.什么是电动机的软起动?有哪几种起动方式? 运用串接于电源与被控电机之间的软起动器,控制其内部晶闸管的导通角,使电机输入电压从零以预设函数关系逐渐上升,直至起动结束,赋予电机全电压,即为软起动,在软起动过程中,电机起动转矩逐渐增加,转速也逐渐增加。软起动一般有下面几种起动方式。 (1)斜坡升压软起动。这种起动方式最简单,不

具备电流闭环控制,仅调整晶闸管导通角,使之与时间成一定函数关系增加。其缺点是,由于不限流,在电机起动过程中,有时要产生较大的冲击电流使晶闸管损坏,对电网影响较大,实际很少应用。 (2)斜坡恒流软起动。这种起动方式是在电动机起动的初始阶段起动电流逐渐增加,当电流达到预先所设定的值后保持恒定(t1至t2阶段),直至起动完毕。起动过程中,电流上升变化的速率是可以根据电动机负载调整设定。电流上升速率大,则起动转矩大,起动时间短。 该起动方式是应用最多的起动方式,尤其适用于风机、泵类负载的起动。 (3)阶跃起动。开机,即以最短时间,使起动电流迅速达到设定值,即为阶跃起动。通过调节起动电流设定值,可以达到快速起动效果。 (4)脉冲冲击起动。在起动开始阶段,让晶闸管在级短时间内,以较大电流导通一段时间后回落,再按原设定值线性上升,连入恒流起动。 该起动方法,在一般负载中较少应用,适用于重载并需克服较大静摩擦的起动场合。 3.软起动与传统减压起动方式的不同之处在哪里?

Eclipse中JVM内存设置

Eclipse中JVM内存设置 eclipse.ini内存设置 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 这里有几个问题: 1. 各个参数的含义什么? 2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动? 3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置? 下面我们一一进行回答 1. 各个参数的含义什么? 参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。 堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memo ry)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。 堆内存分配

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-X mx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。 非堆内存分配 JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxP ermSize设置最大非堆内存的大小,默认是物理内存的1/4。 JVM内存限制(最大值) 首先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,J VM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows 系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。 2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动? 通过上面对JVM内存管理的介绍我们已经了解到JVM内存包含两种:堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作系统。所以说设置VM参数导致程序无法启动主要有以下几种原因: 1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize; 2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。 3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?

SIRIUS 3RW44软起动器通讯及参数配置使用入门

SIRIUS 3RW44软起动器通讯及参数配置使用入门 1.概述SIRUS 3RW44电子软起动器可以通过PROFIBUS-DP网络进行通讯。硬件版本要求从E06,生产日期从060501开始,见图1标识。本文将主要讲述如何通过PROFIBUS-DP网络进行通讯,以及如何通过Softstarter ES软件进行参数 ... 1.概述 SIRUS 3RW44电子软起动器可以通过PROFIBUS-DP网络进行通讯。硬件版本要求从E06,生产日期从060501开始,见图1标识。本文将主要讲述如何通过PROFIBUS-DP网络进行通讯,以及如何通过Softstarter ES软件进行参数化、操作和监视。 图1. 版本号 2.PROFIBUS-DP通讯 首先要选择通讯模板,3RW44软起动器装配PROFIBUS通讯模版后具备PROFIBUS 通讯功能。通讯模版的订货号:3RW4900-OKC00。(注意:在安装通讯模版时首

图2安装通讯模板 2.1激活通讯模板功能和设置站地址 2.1.1通过液晶屏激活通讯模板和设置站地址 1. 在首次接通3RW44软起动器之前,要先检查主侧和控制侧的接线是否正确。在首次施加控制电压之后,会自动进入必须执行一次的快速起动菜单中,根据设备的情况来预设软起动器的重要参数。(详见操作手册) 2. 按照图3所示的顺序操作按键来激活通讯模版。

图3激活通讯模板 3. 按照图4所示设定设备PROFIBUS DP地址,并按照图5保存参数。 4. PROFIBUS-DP LED 红色闪烁。 5. 当PROFIBUS-DP图标“ ”显示在液晶屏的下面时表示通讯模版被成功激活。

JVM内存大小配置方式

JVM内存大小配置方式 By:sheagle@https://www.doczj.com/doc/3f10068891.html, 1.最简单的方式,tomcat当中进行配置 用记事本打开tomcat安装路径下bin文件夹中的Catalina.bat,在文件当中添加set JAV A_OPTS=-Xms256m-Xmx512m 该方式只适合于使用Catalina Start指令及其类似方式通过执行Startup.bat中的指令方式启动tomcat 2.在Eclipse当中配置tomcat的内存启动大小 Eclipse->Window->Preferences->Server->Runtime Environments->选中Apache Tomcat v5.0->点击Edit按钮->在弹出对话框里点击JRE后面的Installed JREs按钮->在弹出对话框中选中tomcat使用的那个JRE->点击Edit按钮->在弹出对话框中,找到Default VM Arguments,并在输入框中输入:-Xms256M-Xmx512M 该修改方式只适合于使用Eclipse启动tomcat 3.在注册表中修改tomcat大小 如果你的电脑上边安装了tomcat服务,那么你也可以通过以下设置来修改通过

服务启动时的tomcat内存。 打开tomcat安装路径下bin文件夹中的tomcat6w.exe。选中Java,修改Inital memory pool和Maximum memory pool 该修改方式只适合于使用“服务”方式启动tomcat 总结: 关于tomcat启动时JVM虚拟机内存大小的配置,针对每种情况会有多种不同的配置方式,基本上都是修改配 置文件中参数的大小,无论使用哪种配置方式进行配置,只要能达到效果即可

uboot启动常见的错误汇总

【uboot启动常见的错误汇总】 1. operating at 100M full duplex mode *** ERROR: `ethaddr' not set dm9000 i/o: 0x5000000, id: 0x90000a46 DM9000: running in 16 bit mode MAC: 00:00:00:00:00:00 operating at 100M full duplex mode Wrong Image Format for bootm command ERROR: can't get kernel image! 原因是:没有设置mac地址,需要重新设置 setenv ethaddr 01:02:03:04:05:06 saveenv/save 2.在开发板上ping ubuntu的ip地址ping不通 1.网线没插 2.ubuntu没有打开 3.ping 的过程中,ubuntu会扫描ip地址,会一直去获取ip地址,但是开发板没有分配ip地址的权利,也就是ubuntu获取不了ip地址,同时查看ubuntu 的ip地址是没有的。 1.设置临时的ip地址 sudo ifconfig eth0 192.168.1.* 2.永久生效 在ubuntu的右上角添加静态ip地址。 3.发现ubuntu的右上角网络图标类似于wifi的图标,如何将这个图标改成网络的 图标 sudo /etc//init.d/network-manager restart 如何执行之后,还是wifi图标 sudo vi /etc/NetworkManager/NetworkManager.conf managed=false false --->true sudo /etc//init.d/network-manager restart 如果执行之后,还是wifi图标 重启系统 4.你的pc电脑已经打开wifi网,需要将无线网关闭 5.虚拟机网卡设置出错,需要将nat设置为桥接 6.换开发板

eclipse的一些基本操作

首页:调节代码智能提示,自己去window找到对应的文件java javascript html xml调节就行,很简单 1、如何新建java项目或Java Web项目 在eclipse中的Project Explorer 视图中,右键--> New --> Project,然后根据出现的对话框,里面选择Java节点或者web节点,ide 会根据选择的类型创建不同的项目。 输入Project name,现在以创建Dynamic Web Project 为例,然后点击Next 按钮,效果如下图:

在上面对话框输入Project name,选择target runtime(项目运行的服务器),module version (模块版本,一般选最高版本)等等, 接下来点击Next按钮,进入src目录结构,可以自己去搭建,然后下面有一个Default output folder ,效果如下:

这个是用于调整java类文件编译之后的保存目录,默认是在根目录下的build下的classes 下,一般不建议放在这里,毕竟不安全。 建议修改值为WebContent\WEB-INF\classess 接下来点击Next 按钮,进入如下页面: Context root : 表示项目的发布名称,也就是我发布到tomcat webapps下的目录,实践证明:如果我改成上面的webProject 这个名称,然后使用eclipse发布到tomcat webapps 目录下之后,多出来的还是test,然后通过http://localhost:8080/test 可以访问,同时http://localhost:8080/webProject 一样可以访问。这样的话就实现了一个项目发布两个访问地址的功能了。 Content directory :表示整个web项目的内容目录,eclipse默认是WebContent,myeclipse 默认是WebRoot。 generate web.xml deployment descriptor 这个多选框表示是否生成web.xml的部署描述,必须勾上。 点击Finish 完毕。 2、如何在eclipse中修改java编辑器的字体?

Java JVM参数设置及日志查看

基础知识-Java JVM参数设置及日志查看 JVM内存参数 -Xms:初始堆大小;默认值为物理内存的1/64(<1GB),默认(MinHeapFreeRatio 参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制。-Xmx:最大堆大小;默认值为物理内存的1/4(<1GB) 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制 -Xmn:年轻代大小(1.4or lator);注意:此处的大小是(eden+ 2 survivor space).与jmap -heap中显示的New gen是不同的。整个堆大小=年轻代大小+ 年老代大小+ 持久代大小。增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8 -XX:NewSize:设置年轻代大小(for 1.3/1.4) -XX:MaxNewSize:年轻代最大值(for 1.3/1.4) -XX:PermSize:设置持久代(perm gen)初始值物理内存的1/64 -XX:MaxPermSize:设置持久代最大值;默认值为物理内存的1/4。注意IBM的JDK设置此参数无效。 -Xss:每个线程的堆栈大小;JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用的线程所需内存大小进行调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。一般小的应用,如果栈不是很深,应该是128k够用的大的应用建议使用256k。这个选项对性能影响比较大,需要严格的选择。 -XX:ThreadStackSize:Thread Stack Size;(0 means use default stack size) [Sparc: 512; Solaris x86: 320 (was 256 prior in 5.0 and earlier); Sparc 64 bit: 1024; Linux amd64: 1024 (was 0 in 5.0 and earlier); all others 0.],此值设置和-Xss设置相似,目前较多使用-Xss。 -XX:NewRatio:年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)-XX:NewRatio=4表示年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5 当Xms=Xmx并且设置了Xmn的情况下,该参数不需要进行设置。 -XX:SurvivorRatio:Eden区与Survivor区的大小比值;设置为8,则两个Survivor 区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10 -XX:LargePageSizeInBytes:内存页的大小不可设置过大,会影响Perm的大小,默认为128m -XX:+UseFastAccessorMethods:原始类型的快速优化 -XX:+DisableExplicitGC:关闭System.gc();这个参数谨慎使用。 -XX:MaxTenuringThreshold:垃圾最大年龄;如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代. 对于年老代比较多的应用,可以提高效率.如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率,该参数只有在串行GC时才有效。 -XX:+AggressiveOpts:加快编译 -XX:+UseBiasedLocking:锁机制的性能改善

相关主题
文本预览
相关文档 最新文档