手机版
热门标签
站点地图
我要投稿
广告合作
联系我们
搜 索
广告位招租
广告位招租
切换导航
首页
编程教程
编程导航
编程百科
编程问答
编程博文
编程实例
硬件设备
网络运营
软件教程
移动数码
办公软件
操作系统
人工智能
栏目导航
▸ 编程语言
▸ 前端开发
▸ 移动开发
▸ 开发工具
▸ 程序设计
▸ 行业应用
▸ CMS系统
▸ 服务器
▸ 数据库
公众号推荐
微信公众号搜
"智元新知"
关注
微信扫一扫可直接关注哦!
子栏目导航
Git
GitHub
SVN
Jenkins
Vim
vmware
Hyper-v
SSH
Jmeter
sysTemd
Maven
Webpack
Zookeeper
k8s
Phpstorm
JVM
IDEA
Appium
Cypress
pandas
Eclipse
HBuilder
编程工具
Markdown
Mac
Pytest
Selenium
istio
Gradle
Tensorflow
Homebrew
编程之家
JVM
java – 32位JVM和64位JVM之间的Integer.MAX_VALUE有区别吗?
32位JVM和64位JVM之间的Integer.MAX_VALUE值是否不同? 我正在使用32位JDK编译一个Java类,并将其部署在64位机器上.我只想确保我可以依靠检测if(aNumber == Integer.MAX_VALUE). 否定义Integer.MAX_VAlUE = 2 ^ 31 – 1 Integer.MAX_VALUE
作者:编程之家 时间:2019-06-08
java – 为什么jvm有很多clasloaders?为什么不一个?
我正在 Java中学习ClassLoader,然后我想知道,为什么JVM有很多类加载器,为什么不只一个?首先加载< Java_Runtime_Home> / lib,然后加载< Java_Runtime_Home> / lib / ext和最后一个加载类路径. 如果你有自定义的classloader,那么系统是第一个. 有人可以告诉我为什么JVM有很多类加载器? 一个非常有用的应用程序是能够将多个
作者:编程之家 时间:2019-06-03
java.lang.UnsatisfiedLinkError:无法在Windows x86机器上的32位JVM上加载64位SWT库
我刚刚开始使用swt( windows x86_x64兼容版本). 当我在 Eclipse中运行示例代码片段时,我收到以下错误… Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot load 64-bit SWT libraries on 32-bit JVM at org.eclipse.swt.internal.
作者:编程之家 时间:2019-06-03
java – 如何使用没有进一步调用的JVMTI代理重新执行方法?
我在运行时检查一个类文件用于各种目的.我正在使用JVMTI代理.调用方法的策略是调用RetransformClasses函数来调用ClassFileLoadHook.这种策略适用于所有在调试时间之后进行任何进一步调用的方法,因为实际的测试发生在后续的函数调用中,但是对于没有进一步调用的方法(如程序中的主要功能)不起作用. 我想在执行过程中即时运行一种方法.我想要一些程序,如检测代码的堆栈替换(OS
作者:编程之家 时间:2019-05-25
java – 以编程方式填充JVM永久生成(PermGen)内存区域
我需要测试我开发的一些JMX监视脚本,特别是我想验证我对PermGen区域的监控是否正常工作.所以为了测试这个,我想运行一些代码来加载大量的类来消耗PermGen. 我目前的方案是编写一个脚本来生成前缀(1..n).java编译它们然后在cue上运行: for( int i=1 ; i < n ; i ++){ Class.forName("com.mypackage.prefix"+i)
作者:编程之家 时间:2019-05-25
java – JVM进程如何分配内存?
我了解JVM进程如何分配自己的内存有一点差距.我所知道的 RSS = Heap size + MetaSpace + OffHeap size 其中OffHeap由线程堆栈,直接缓冲区,映射文件(库和jar)和JVM代码本身组成; 目前我正在分析我的Java应用程序(Spring Boot Infinispan),其中RSS是779M(它运行在docker容器中,所以pid 1可以): [ roo
作者:编程之家 时间:2019-05-21
java – 任何方式来提升JVM启动速度?
据说 Java在性能方面比python快10倍.这就是我从基准点看到的.但真正带来的Java是JVM的启动时间. 这是我做的一个测试: $time xlsx2csv.py Types\ of\ ESI\ v2.doc-emb-Package-9 ... <output skipped> real 0m0.085s user 0m0.072s sys 0m0.013s $ti
作者:编程之家 时间:2019-05-20
java – 用于确定JVM即将进入内存/ GC问题的有用指标
我有一个 Scala数据处理应用程序,95%的时间可以处理在内存中抛出的数据.剩下的5%如果没有被选中,通常不会打到OutOfMemoryError,而是进入一个主要的GC的周期,尖锐的CPU,防止后台线程执行,如果它甚至完成,只要它是10x-50x有足够的记忆力 我已经实现了可以将数据刷新到磁盘的系统,并将其视为内存中的迭代器.这通常比记忆慢一个数量级,但对于这5%的情况来说足够了.我目前正在通
作者:编程之家 时间:2019-05-15
java – Hung JVM消耗100%的CPU
我们有一个在 Linux 32位(CentOS)上的Sun JRE 6u20上运行的JAVA服务器.我们使用服务器热点与CMS收集器与以下选项(我只提供了相关的): -Xmx896m -Xss128k -XX:NewSize=384M -XX:MaxPermSize=96m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC 有时,运行一段时间后,JVM似乎进入挂起状
作者:编程之家 时间:2019-05-12
java – 为什么大多数JVM gcs都不使用引用计数?
为什么他们不需要他们,如果有人决定实施使用它们的虚拟机,他们可能面临什么问题? > 计数引用必须在对象外部进行. > 计数引用缓慢.甚至更慢的处理w /循环引用,但这不是不可能的.还是慢 > 计数引用实际上非常慢,因为它必须使用CAS循环 > 非计数引用更容易实现,而且更快,尤其是.与一些操作系统内存页面技巧. >引用计数可以通过逃逸分析完全删除,只要对象不能逃脱.
作者:编程之家 时间:2019-05-12
java – 如何增加最大数量的JVM线程(Linux 64bit)
我不能在 Linux机器上创建超过32k的Java线程,内存为15G. 您可以使用 sample program来查找当前线程限制. 如果在线程“main”中遇到异常java.lang.OutOfMemoryError:无法创建新的本机线程,请检查这些: >在小型内存机器中 每个Java线程都使用自己的堆栈内存.默认堆栈大小为1024k(= 1M).您可以减少堆栈大小,如java -Xss512k
作者:编程之家 时间:2019-05-08
java – JVM getObjectSize示例
我在获取JVM中的对象大小时遇到了一些麻烦. JDK 5提供了一个接口Instrumentation来通过premain()函数来计算,但我不知道如何使用它. 有谁能够帮我? 最简单,最有效的解决方案是使用非常小的库 <dependency> <groupId>com.carrotsearch</groupId> <artifactId>java-sizeof</artifac
作者:编程之家 时间:2019-05-06
如果使用的JVM是x86或x64,则以不同方式解析Maven依赖项?
我有一个Maven存储库设置为托管一些dll,但我需要我的Maven项目下载不同的dll,具体取决于使用的JVM是x86还是x64. 因此,例如,在运行x86版本的JVM的计算机上,我需要将ABC.dll作为依赖项从存储库下载,但在运行x64版本的JVM的另一台计算机上,我需要它下载XYZ.dll. 我该怎么做呢?一个示例pom.xml文件会很好. 这适用于任何VM.您可以根据环境使用 profi
作者:编程之家 时间:2019-05-06
如何从Java程序中获取JVM的最小和最大堆大小设置
如何从 Java程序中获取VM的最小和最大堆大小设置? 最大堆大小: Runtime.getRuntime().maxMemory(); 您可能会感兴趣的其他一些计算: Runtime runtime = Runtime.getRuntime(); long maxMemory = runtime.maxMemory(); long allocatedMemory = runtime.totalM
作者:编程之家 时间:2019-05-06
Java:如何指定JVM参数-XX:ErrorFile并在filename中保留自动PID
我正在使用JNI,当由于目标应用程序中的错误而发生崩溃时,会生成hs_err_pid * .log文件.我想更改存储该文件的默认位置. 现在,通过搜索我明白这可以使用JVM参数-XX:ErrorFile来实现. documentation表示此参数的默认值为./hs_err_pid\u0026lt;pid\u0026gt;.log 现在,当我覆盖默认值时,如何告诉JVM仍然在文件名中包含进程ID?
作者:编程之家 时间:2019-05-04
在重新安装JVM后,在hadoop启动脚本中调用sed语法
我试图在 Windows Azure云上运行3个节点Hadoop集群.我已经通过配置,并测试发布.一切看起来都很好,但是,由于我以前使用OpedJDK,根据我所读取的不推荐用于Hadoop的VM,我决定将其替换为Oracle Server JVM.删除了旧的java安装与Yum,以及/usr/lib中的所有java文件夹,安装了最新版本的Oracle JVM,更新了PATH和JAVA_HOME变量
作者:编程之家 时间:2019-05-03
java – final static vs final非静态字段和JVM优化
我很好奇JVM如何处理静态最终字段.我看到了一个类似的问题 here,但这不是我想要的.让我们考虑这样的例子: public class TestClassX { public final int CODE_A = 132; public final int CODE_B = 948; public final int CODE_C = 288; // some other
作者:编程之家 时间:2019-04-30
在JVM 1.8下远程调试java web启动
我有一个 Java Web Start应用程序,我以前通过一个快捷方式开始: "C:\Program Files\Java\jdk1.7.0_67\bin\javaws.exe" -J-Dfile.encoding=UTF-8 -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=8200"
作者:编程之家 时间:2019-04-29
为java中的actorsystem禁用akka.jvm-exit-on-fatal-error
我正在使用akka actor系统进行多线程处理.它在正常使用情况下工作正常.但是,Akka因致命错误而关闭了JVM.请告诉我如何配置Akka以禁用 java中的“akka.jvm-exit-on-fatal-error”.下面是代码. public class QueueListener implements MessageListener { private String _que
作者:编程之家 时间:2019-04-28
java – 在JVM之外分配内存并在JVM中使用它
是否可以在JVM内部创建一个可以作为对象在JVM内部使用的持久性内存对象,以便在JVM重新启动时能够存活? 特别的想法是,我们可以在JVM之外分配内存,然后使用JNI接口来访问这个内存并将其与一些Java数组相关联. 有人试图执行这样的黑客吗?任何平台依赖就足够了. 例如,这可以帮助在重新启动JVM进程期间执行内存中DB加载的优化. 是的,这是完全可能的,即使没有JNI. 这个想法是在tmpfs文
作者:编程之家 时间:2019-04-27
估计64位Java中的最大安全JVM堆大小
在分析一个有问题的64位 Java应用程序的过程中,我注意到分析器本身(YourKit)正在使用真正庞大的内存量.我在YourKit启动脚本中得到的是: JAVA_HEAP_LIMIT="-Xmx3072m -XX:PermSize=256m -XX:MaxPermSize=768m" 天真地,假设一些开销,这将导致我猜测YourKit将使用最大可能超过4 GB的东西.但是,我在PS中实际看到的是
作者:编程之家 时间:2019-04-26
java – 单个JVM中的多个Spark服务器
有没有办法在同一个JVM中运行多个Spark java服务器实例?我在“插件”软件中使用它,并根据外部环境启动我的插件的多个实例,然后导致 java.lang.IllegalStateException: This must be done before route mapping has begun at spark.SparkBase.throwBeforeRouteMappingExcept
作者:编程之家 时间:2019-04-25
java – 由于网络中断后锁定nfs文件导致JVM崩溃
以下代码片段导致JVM崩溃:如果获取锁定后发生网络中断 while (true) { //file shared over nfs String filename = "/home/amit/mount/lock/aLock.txt"; RandomAccessFile file = new RandomAccessFile(filename, "rws
作者:编程之家 时间:2019-04-25
编译器构造 – 是否可以使用JVM字节码显式释放内存?
使用JVM字节码有 several computer programming languages,比如说,他们的解释器/编译器的目标语言.在我看来,许多新的编程语言(不到15年)都在JVM上运行,我想知道是否所有这些语言都禁止显式内存释放: 是否可以通过任何指令使用字节码显式分配 – 释放内存?反过来说,垃圾收集器总是可以解释内存吗? JVM抽象出所有内存管理.内存释放没有字节码,就像没有用于内存
作者:编程之家 时间:2019-04-25
java – 如何在运行测试时使Netbeans使用特定的JVM参数?
我正在使用Netbeans与Maven和TestNG.使用maven surefire插件运行测试时,我可以设置一些配置参数,特别是用于我的测试(跟踪)的日志记录级别: -Dorg.slf4j.simpleLogger.defaultLogLevel=trace -Dorg.slf4j.simpleLogger.logFile=System.out 但是,在运行特定测试文件(CTRL F6)或测试
作者:编程之家 时间:2019-04-25
java – 如何确定在JVM实例上设置的-server选项
我正在尝试确定我的JVM实例上是否默认启用了JVM(使用jdk 1.7u3)-server选项.根据我的环境( Windows 2008 Server R2)和 Server-Class Machine detection information,我希望它可以设置,虽然我想明确知道.当然我可以使用该选项显式启动JVM,但我很可能会有一种简单的方法来确定它. 我已经尝试了以下方法,但似乎都没有明确说
作者:编程之家 时间:2019-04-22
java – 我们如何在JVM上有动态类型的语言?
我们有Jython,J Ruby,Groovy,它们是动态类型的并且可以通过JVM运行.我明白这些语言编译为字节码. 其他语言如Scala支持类型推断,并且清楚地说,编译器为我们推断了类型. 但Java是一种静态语言,它编译为字节码,这是否意味着字节码支持动态输入? 例如在Java中,我们需要在编译时声明变量类型,永远不会改变它.但是,在Python的情况下,我们不必声明一个类型,但是我们可以在运
作者:编程之家 时间:2019-04-22
JVM内存管理的机制
Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of the 64MB of PermGen (Non-heap memory) space remains. It is strongly recommendedthat you exit and restart MyEclipse with new virtual machine memoryparamters to increase this memory. Failure to do so can result indata loss. The recommended Eclipse memory parameters are:eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M1.参数的含义-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M-vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了-Xms128m JVM初始分配的堆内存-Xmx512m JVM最大允许分配的堆内存,按需分配-XX:PermSize=64M JVM初始分配的非堆内存-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。1)堆(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 后调整堆的大小。说明:如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。非堆内存分配JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。(还有一说:MaxPermSize缺省值和-server -client选项相关,-server选项下默认MaxPermSize为64m,-client选项下默认MaxPermSize为32m。这个我没有实验。)上面错误信息中的PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。还没有弄明白PermGen space是属于非堆内存,还是就是非堆内存,但至少是属于了。XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space 就是内存益出。说说为什么会内存益出:(1)这一部分内存用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同。(2)GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS 的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。2)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参数导致程序无法启动主要有以下几种原因:1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?那为什么同样的参数在快捷方式或者命令行中有效而在eclipse.ini文件中是无效的呢?这是因为我们没有遵守eclipse.ini文件的设置规则:参数形如“项 值”这种形式,中间有空格的需要换行书写,如果值中有空格的需要用双引号包括起来。比如我们使用-vm C:/Java/jre1.6.0/bin/javaw.exe参数设置虚拟机,在eclipse.ini文件中要写成这样:-vmC:/Java/jre1.6.0/bin/javaw.exe-vmargs-Xms128M-Xmx512M-XX:PermSize=64M-XX:MaxPermSize=128M实际运行的结果可以通过Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按钮进行查看。另外需要说明的是,Eclipse压缩包中自带的eclipse.ini文件内容是这样的:-showsplashorg.eclipse.platform--launcher.XXMaxPermSize256m-vmargs-Xms40m-Xmx256m其中–launcher.XXMaxPermSize(注意最前面是两个连接线)跟-XX:MaxPermSize参数的含义基本是一样的,我觉得唯一的区别就是前者是eclipse.exe启动的时候设置的参数,而后者是eclipse所使用的JVM中的参数。其实二者设置一个就可以了,所以这里可以把–launcher.XXMaxPermSize和下一行使用#注释掉。4. 其他的启动参数。 如果你有一个双核的CPU,也许可以尝试这个参数:-XX:+UseParallelGC让GC可以更快的执行。(只是JDK 5里对GC新增加的参数)补充:如果你的WEB APP下都用了大量的第三方jar,其大小超过了服务器jvm默认的大小,那么就会产生内存益出问题了。解决方法: 设置MaxPermSize大小可以在myelipse里选中相应的服务器比如tomcat5,展开里面的JDK子项页面,来增加服务器启动的JVM参数设置:-Xms128m-Xmx256m-XX:PermSize=128M-XX:MaxNewSize=256m-XX:MaxPermSize=256m或者手动设置MaxPermSize大小,比如tomcat,修改TOMCAT_HOME/bin/catalina.bat,在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行:JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以减少jar 文档重复占用内存
作者:编程之家 时间:2019-02-17
JVM执行篇:使用HSDIS插件分析JVM代码执行细节--转
http://www.kuqin.com/java/20111031/314144.html在《Java虚拟机规范》之中,详细描述了虚拟机指令集中每条指令的执行过程、执行前后对操作数栈、对局部变量表的
作者:编程之家 时间:2019-02-12
Understanding JVM Internals---不得不转载呀
http://www.cubrid.org/blog/dev-platform/understanding-jvm-internals/http://architects.dzone.com/arti
作者:编程之家 时间:2019-02-12
上一页
111
112
113
114
115
116
117
118
119
下一页
小编推荐
热门标签
更多
python
JavaScript
java
HTML
reactjs
C#
Android
CSS
Node.js
sql
r
python-3.x
MysqL
jQuery
c++
pandas
Flutter
angular
IOS
django
linux
swift
typescript
路由器
JSON
路由器设置
无线路由器
h3c
华三
华三路由器设置
华三路由器
电脑软件教程
arrays
docker
软件图文教程
C
vue.js
laravel
spring-boot
react-native