社区
Java SE
帖子详情
如何让每个JVM启动的 时候都自动加载某个程序?
dash_running
2007-07-12 03:51:48
比如我写了一个程序叫A,另外有任意的一个java 程序,比如叫App,
我希望自己的程序A在JVM启动时能自动运行,从而可以监控App的 运行情况,请问怎么办?因为资料比较少,懂的人估计不多哦 !而且A和 App要在同一个JVM里运行
...全文
533
15
打赏
收藏
如何让每个JVM启动的 时候都自动加载某个程序?
比如我写了一个程序叫A,另外有任意的一个java 程序,比如叫App, 我希望自己的程序A在JVM启动时能自动运行,从而可以监控App的 运行情况,请问怎么办?因为资料比较少,懂的人估计不多哦 !而且A和 App要在同一个JVM里运行
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
haixiao189
2008-11-11
打赏
举报
回复
给你一个正解吧:用java assistive technology, 可以做出来一个类似windows平台的spy++工具。
age_x1
2007-08-15
打赏
举报
回复
可以去sun上问
dash_running
2007-07-24
打赏
举报
回复
各位,我找到解决办法了,用java5新增的instrument包里的premain函数,
java -javaagent:myjar.jar App
1.写一个AAA类,其中有一个public static void premain(Instrument inst, ...)(第二个参数忘记了)
2.把该AAA类打包成myjar.jar, jar里的manifest文件必须有一条PreMain-Class: AAA
3.java -javaagent:myjar.jar App
这样,在执行App的main函数之前就会先执行premain函数,所以,想做什么事都可以写在premain函数里
dash_running
2007-07-24
打赏
举报
回复
没有main函数?是在容器里跑的程序吗?那就只能把App换成你的容器的程序了。具体我没尝试过。你这么多星,不会这个都不明白吧,也许是我不明白你的意思
真的很小奚
2007-07-24
打赏
举报
回复
LZ那要不是控制台程序 没有MAIN函数怎么办?
IhaveGotYou
2007-07-23
打赏
举报
回复
不知道我的理解对不对,把A(假设为可执行文件)的文件尾部附加java.exe,同时把这个捆绑程序命名为java.exe,执行时肯定先执行A,再把java.exe通过流的形式作为文件分离出来,关闭A(为了重命名文件),新开进程执行java.exe(环境变量可能是难题),新开进程监控java.exe...
dash_running
2007-07-19
打赏
举报
回复
看来是不可能了?
总结一下,
1 每个JVM就是一个进程,并不意味着只能在一个JVM里运行一个程序,比如JVMPI就是另一个在JVM里运行的程序,不过不是java程序
2 如果要让自己的java程序在每个JVM实例运行时自动装载,就必须要JVM支持,但JVM是否以某种比如JVMPI的机制支持这种类装载还不清楚。
3 我想做的实际上是一个通用的程序,对所有的java程序都能起作用(就是说随便给我个字节码的java程序,我的程序都能对它起作用),所以,象static{
System.getruntime.exec("A.exe")
}
类似的解决办法是不适用的
继续研究中,等待进一步结论
yulin001122
2007-07-15
打赏
举报
回复
可以的。 在公共入口的类中调用
static{
System.getruntime.exec("A.exe")
}
或者使用bat
真的很小奚
2007-07-13
打赏
举报
回复
每一个JAVA程序运行既是一个JVM
LZ对JVM的理解有误
实现LZ的想法只能每个JAVA程序都要写入调用您写的类A了。
建议LZ看下《深入JAVA虚拟机》
DeepNightTwo
2007-07-13
打赏
举报
回复
楼主去看一下JVMPI相关资料,应该是有接口留给你的,不过启动的时候可能就不能用java启动了。或者去eclipse.org上看看tptp这个项目吧。基本上这个已经超出了java语言的范围了,看深入java虚拟机也没用。
weihthchk
2007-07-13
打赏
举报
回复
楼上的方法学习周期太长了。
把你的默认java.exe(或者linux下的java)改名,然后写一个同名的批处理文件(或者shell脚本),叫做java.bat(或者java)。
schumiXsuse
2007-07-12
打赏
举报
回复
可以参考Jprofile的实现.
jason_wx
2007-07-12
打赏
举报
回复
既然事A去监控APP,为什么一定要jvm启动的时候就加载A
让APP启动的时候加载A不就ok了
frilly
2007-07-12
打赏
举报
回复
利用Socket连接,不知道如何?
约翰羊
2007-07-12
打赏
举报
回复
不会,帮顶
JVM
修炼之路
【课程介绍】每节课为一个小时的内容。课程内容循序渐进,由浅入深,内容覆盖基础、进阶、高级。
JVM
是Java知识体系中的重要部分,对
JVM
底层的了解是每一位Java
程序
员深入Java技术领域的重要因素。本课程试图通过简单易懂的方式,系统的深入讲解
JVM
相关知识。包括
JVM
执行过程、虚拟机类
加载
机制、运行时数据区、GC、类
加载
器、内存分配与回收策略等。
JVM
的类
加载
原理
一、什么是类
加载
器(ClassLoader) 类
加载
器是指在系统运行过程中动态的将字节码文件
加载
到
JVM
中的工具,是一个类。基于这个工具的整套类
加载
流程,称作类
加载
机制。在 IDE 中编写的都是源代码文件,以后缀名为.java的文件形式存在于磁盘上,经过编译后生成后缀名为.class的字节码文件,类
加载
器
加载
的就是这些字节码文件。 首先 Java 源代码(.java)文件会被 Java 编译器编译为字节码(.class)文件,然后由
JVM
中的类
加载
器
加载
各个类的字节码文件,
加载
完毕之后,交由 JV.
JVM
内存模型和类
加载
运行机制
JVM
内存模型和类
加载
运行机制
JVM
内存模型 运行一个 Java 应用
程序
,必须要先安装 JDK 或者 JRE 包。因为 Java 应用在编译后会变成字节码,通过字节码运行在
JVM
中,而
JVM
是 JRE 的核心组成部分。
JVM
不仅承担了 Java 字节码的分析和执行,同时也内置了
自动
内存分配管理机制。这个机制可以大大降低手动分配回收机制可能带来的内存泄露和内存溢出风险,使 Java 开发人员不需要关注
每个
对象的内存分配以及回收,从而更专注于业务本身。 在 Java 中,
JVM
内存模型主要分为堆
JVM
之
启动
参数
JVM
的
启动
参数
JVM
启动
参数格式种类以 - 开头以-D开头以 -X 开头以 –XX:开头设置当前Java进程的
启动
参数
JVM
启动
参数功能分类系统属性参数运行模式参数堆内存设置参数设置堆内设置非堆设置堆外GC 设置参数分析诊断参数JavaAgent 参数
JVM
启动
参数格式种类 以 - 开头 以 - 开头为标准参数,所有的
JVM
都要实现这些参数,并且向后兼容 例如:-server 以-D开头 -D 设置系统属性 例如:-Dfile.encoding=UTF-8 以 -X 开头 以 -X 开头为
JVM
启动
参数
JVM
启动
参数 一.几类不同开头的参数 1. 以 - 开头为标准参数,所有的
JVM
都要实现这些参数,并且向后兼容,如 -server。 2. -D 设置系统属性,如 -Dfile.encoding=UTF-8。 3. 以 -X 开头为非标准参数,基本都是传给
JVM
的,默认
JVM
实现这些参数的功能,但是并不保证所有
JVM
实现都满足,且不保证向后兼容。 可以使用 java -X 命令来查看当前
JVM
支持的非标准参数,如 -Xmx8g。 4. 以 –XX:开头为非稳定参数, 专门用于控制
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章